This may not be the kind of advice you're looking for, but why not dabble in programming in general while you wait for Swift to come out, and then make your decision, based off other people's advice or otherwise?
Since you have no programming experience, it may be a decent idea to teach yourself the fundamentals (language doesn't really matter here, though I guess you could use Obj-C) first. Basic logic, functions, recursion, making a text-based Tic-Tac-Toe (in as little lines as you can!). Get familiar with programming things, and the way of thinking you use in doing so.
But as I said, that may not be what you're looking to do. There's nothing inherently wrong with diving right in, getting down to business. It can be quite fun a learning experience, but I personally find I can understand the underlying principles better when I learn them by using them without a lot of "noise" around them.
Also, Cocoa Dev Central is a pretty resource. I strongly advise you not to pay for courses for which the information is widely available on the internet. Sure, quality isn't guaranteed, and $40 isn't all that much, but there's a lot of great resources out there.
And remember to have fun! Programming's great, but take breaks if you get frustrated with something. It's all worth it in the end.
The swift programming book that apple released won't be of much use, as it is written for programmers using fancy programmer words. Also, swift should be available for the public to use once Yosemite is released, as you only need to have a developer account to access the early preview.
If you want a good place to start programming, I would recommend http://cocoadevcentral.com, as it explains it in very simple and easy to understand layman terms (it taught me objective-c!).
Also be sure to check out communities like stack overflow and /r/simpleios for help (hell, you can even pm me too if you need help)
Happy programming!
For Objective-C learning, in case you are already familiar with a programming language, I recommend cocoadevcentral.
I would start by making a note-taking app, that writes and reads to a SQLite database and meanwhile you get familiar with writing model classes. Perhaps extend the app to connect with a restul JSON API. You'll naturally learn design patterns like blocks and singletons and delegates. I've been through all this recently with not much else than stackoverflow + programming blogs. You'll be fine.
Despite the visual differences, Obj-C is actually really similar to AS3 and Javascript in a lot of ways. The biggest difference is mostly the manual memory management, and the fact that you have to write header files.
This cheat sheet came in handy for learning all the syntax: http://cocoadevcentral.com/d/learn_objectivec/
At the end of the day, it's really best to just learn by making stuff. Make some of Ray Wenderlich's tutorial projects, and then tweak them and add stuff to them until you start to feel comfortable.
Basically in the example you've shown, it is just replacing data in the tableView with a different set depending on what is the selected segmented control button. There is quite a bit of code, although that is because the example is entirely done without using nibs/storyboard UI.
The first section of code describes how to create the control itself and place it onscreen, and have it execute another function when pressed on.
The second section of code describes the process of simply replacing the data (the list of objects) presented in the tableView. The alternative method would be to just switch to a new tableView, however that would require the device to draw/create alot of existing elements again.
The third section is a little less pleasing, it is modifying the contents of cells depending on which button in the segmented control is selected by the user. cellForRowAtIndexPath is a delegate method that implements the steps required to create each cell displayed in the tableView.
If you have trouble understanding the code I highly recommend learning obj-c to an extent, it is very useful and tons of documentation still uses it. This reference guide is amazing if you are well acquainted with other programming languages.
This helped me grasp the fundamentals. It's a very short tutorial with a decent amount of information.
Also, iTunes University has videos on many Objective-C topic. I am currently watching the Stanford University lectures.
I think you'd benefit a lot from reading this. It's a single simple page, and it created many "ah-hah" and "d'oh" moments for me; Obj-C was/is my first language.
My answers; you might find these lackluster, though, in comparison: Anything declared as an instance variable (ivar) of a class is automatically available to all instance methods of that class and, if declared as public public, anything else using ->
. For use in other classes, you can use simple method getters. Objective-C 2.0 (2007) also introduces a Java-ish dot syntax for "properties", which are synthesized setters/getters. Memory management is surprisingly simple, actually; it's done using retain/release. If it's retained by something, it sticks around. If it isn't, it goes away.
Thanks for saying you're on a Mac. That's really important because your operating system is what makes graphical applications possible. Every OS has different APIs for doing it.
You can either learn the Mac-specific APIs (Cocoa), or you can use a library that provide you some abstractions - often cross-platform abstractions.
If your goal is to do 2-D graphics like a snake game, LibSDL is perfect. It's cross-platform and simple and gives you just what you need for a graphical 2-D game but nothing more.
If your goal is to make an application that looks like a native application with windows, menus, buttons, and scroll bars, the most popular solution is Qt.
If you want to learn the Mac APIs, start here. If you have any interest in iOS programming, it's somewhat of a "cousin" API - definitely not the same, but with some similarities due to their common heritage.
In that case you'll probably want to learn the basics of Objective-C, because what Flex essentially does is hook into the code of apps on the phone and allows them it to be overridden, these will help:
http://cocoadevcentral.com/d/learn_objectivec/
...Good Luck
Take a look at the C TUtorial for Cocoa. At the end of the tutorial you have 2 additional links to tutorials about arrays and memory management and pointer. I think this is the best way to understand the basics of C and the basics of C are very useful for Objective-C. Don't mess around with C# or Java. For me it was very hard to get into Objective-C after Java and C#.
You're very welcome! The great thing about ARC is that there's actually very little to learn; with that in mind, though, I would actually suggest learning how to properly manage memory, for a number of reasons. One of these is that often you may find yourself using a third party library or somebody else's code which doesn't use ARC, but the main reason is that knowing how memory management on iOS works will help you understand how ARC itself works, which leads to better coding in the end.
Here are a few useful resources for understanding memory management:
Apple's Memory Management Programming Guide. This is useful, but is quite a lot of information to take in at first; it could be good to read the below articles before going through this one.
O'Reilly's short memory management guide is actually pretty good.
Cocoa Dev Central has a section on it (scroll down to section 4).
That's a good path to get started on, but if you'd like, I could make a basic project showing off memory management and comment it extensively to show you how it all works. Alternatively, I could make a slightly more complicated project showing off not only memory management, but a few other aspects of Cocoa development which are vital to learn but often confusing at first, such as delegation.
If you're gonna learn C++ then Obj-C, personally, I'd jump straight into Obj-C. I agree that learning C then Obj-C is a good idea though. For someone completely new to programming, personally jumping into C would be a bit tricky. However, there are some sweet [short] tutorials online for C and Obj-C:
C: http://cocoadevcentral.com/articles/000081.php
Objective-C: http://cocoadevcentral.com/d/learn_objectivec/
However, they require you know at least one scripting language or something first...
I'm not sure were the current best tutorials are located online. When I was starting out I got all of my information from a bunch of little ones, and the examples that Apple provides to developers. There's also a pretty good book on Objective C by Stephen Kochan. I'd recommend taking a look at Cocos2D which I'm told has a pretty good documentation, and this link http://cocoadevcentral.com/d/learn_objectivec/
Many of these sources are probably going to assume some knowledge of C, so if you're totally unfamiliar with programming you might want to grab a book on C, or read some tutorials on beginning programming with C.
Ahh yes, obj C sorry, I miss-typed =).
Object oriented-wise, i've only really got javascript to reference and like I said Java in the past so yeah, trying to get my head around the nuances still.
I just went through this http://cocoadevcentral.com/articles/000081.php and this http://cocoadevcentral.com/d/learn_objectivec/ and its helped me out some.
I've been crazy busy but going to start on part 2 very soon, gotta keep up with ya! haha
Given that you mentioned iPhone, I assume your aiming to develop for the iPhone? C Language Tutorial for Cocoa
That tutorial assumes you have basic knowledge of PHP, and takes you from one to the other. A lot of the concepts will work across all platforms, and not just the Mac, though you may run in to some discrepancies if you use Microsoft's Visual Studio.
The big things to remember when programming for an Operating System rather than browser is:
Data Types. This concept does exist in php, as you can do type casts, but it is not enforced on any level there. In C an integer is an integer; it can't just become a string for instances.
Memory Management. Unless your language is garbage collected, you will need to manage all memory that you use. That means retaining and releasing it. You will want to read up on this.
Pointers. This harks back to memory management. You will knock your head against the wall repeatedly in frustration at these. Don't worry everyone has difficultly with these at first, but they are immensely powerful once you can use them.
Threads and Run Loops. Read up on these. They are fast becoming core skills of any programmer, and some would argue that they already are.
The thing to remember that PHP and Ruby are heavily abstracted languages, further up the ladder, so to speak than say C. C sits directly above assembly language and is about as low as you can get without directly interfacing with the CPU. As a result things are going to seem a little rigid and strict at times. Stick with it, C (in my opinion) one of the most influential languages to have been developed and has influenced so many languages that learning it will allow you to move between languages a lot easier.
Hope this helps, and if you have any specific questions just ask.