What are some good developer resources to make the move to iOS 5? - iphone

With Lion and the new Xcode and ARC and Storyboard and the little glitches that many of us have found in trying to make the move into iOS 5, it can be quite intimidating for a junior developer to make the jump.
I know there are similar questions that touch on specific tasks related to making the switch, but not quite what I and probably others are looking for.
So, what are some good resources to help iOS 4 and Xcode 3 developers make the switch to the new technology?

I had quite some success switching using the Apple WWDC 2011 videos concerning new technologies, especially ARC. If you want to spend a few dollars, I also would recommend iOS 5 by tutorials by Ray Wenderlich. if you are already somewhat familiar with the iOS 4 technologies. The book currently is not done but digital buyers get the current beta version which is almost complete. You can see the introductory chapters on the site as well , category iOS 5, and depending on your needs this may already enough to get a jump start in the new technologies.

Watch some of the WWDC videos (which you can get by going to http://developer.apple.com/wwdc and clicking on the "WWDC Videos" at the bottom of the screen). As far as I know, these are free for registered developers.
The "Intro" talks are probably the most illuminating, for developers just getting started in the process of figuring out what to do with iOS 5.

Here are useful links to help implementing storyboard :
http://codingandcoffee.wordpress.com/2011/10/12/iphone-tutorial-one-introduction-to-storyboarding/
http://www.scott-sherwood.com/?p=219
Calling methods between view controllers using Storyboard

I have several iOS5 tutorials on my site and I have had extremely positive reactions to my Storyboard tutorial, it is slightly more in-depth that this previously mentioned. I also have a practical example with a Lamp backend that shows you how to communicate with an iOS device.
Would love to hear your thoughts on them.

Related

I need help on how to start developing an iPhone application

I have been programming in Microsoft Dot net for the past 4 years. Now, I want to develop an iPhone application. I have no idea where to start. I do not know anything about MAC OSX or any other Apple "words":). Searches on the google about books and online articles fetch a lot of results which is confusing. It would be great if anybody can share their beginner's experience. Thank You.
I've learn all about iPhone programming with this great book: Beginning iPhone 3 Development.
I found it surprisingly easy to pick up. The Apple dev center includes a lot of sample code, and because it's the programming language du jour, there's a lot of forum links and StackOverflow questions about it, as well as plenty of people looking to answer new questions.
It's pretty satisfying to do too, if you've never done mobile development before.
Get yourself a machine and download XCode, the supplied Apple IDE. It's a bit lamer than Eclipse right now, but the new version which is on the verge of release looks much better. Grab yourself access to the developer center (which is worth the investment) and build a simple App or two. Get to know Interface Builder first, because you may not have worked with things like this before.
There are some idiosyncracies in the syntax and whatnot, but you get used to it pretty fast. And then come here and ask more questions. :)
I just ran through this tutorial to get familiar with XCode and Interface Builder.
Then joining a local group about it should be helpful - I'm a member of the Iphone London Users Group and chats with other developers is the most useful tool I have to find out how to do things.

From iPhone to Mac programming

I've looked through the site to make sure this isn't a duplicate. Apologies if I've missed something.
I've been doing iPhone development for about a year now, and I'm comfortable with Objective-C, Xcode and Cocoa (at least what's used on the iPhone), but programming for OS X seems much more involved.
What are some good free resources for someone like me? Most of the stuff I've seen is about learning Objective-C and Cocoa, and I really want to get into the parts of IB I'm not familiar with and anything else that's important on OS X that isn't on the iPhone.
While the iPhone development evironment isn't strictly a subset of the Mac, since there are some improved and iPhone-specific bits, it is nearly so (and it's mainly the good bits). Thus, the Mac is probably the easiest platform to move to from iPhone.
On the Mac, you will especially want to learn about Cocoa Bindings, which underly a lot of modern UI work, but aren't (yet) on the phone.
Addressing your specific question, some well-respected free Mac coding resources include:
the canonical cocoa-dev mailing list run by Apple (which, unfortunately, has only the woefully lame web access implemented by Apple, and sporadically augmented by unreliable third-party efforts, making it mostly useful via actually subscribing to it from one of your email acccounts)
the CocoaDev wiki
Rogue Amoeba's Mike Ash has an unusually useful Q&A Fridays series on his blog
the advanced Mac programming book from Aaron Hillegass, Advanced Mac OS X Programming
although Apple's docs are pretty good now, in the bad old "description forthcoming" days, a lot of us learned how Mac OS X ticked from open-source code published by reputable software houses, like Omni's frameworks which you are free to embed as-is into your apps, or cherrypick code from
(Hmm, I don't usually post here, so I was prohibited from hyperlinking the above references... can I put them in as text? Uh, nope! Well, there's always google, I guess.)
Thankfully, Cocoa on the desktop and Cocoa Touch are very similar. I would recommend just downloading some beginner sample code from Apple's website. Since you already know Objective-C/Cocoa, you should be able to follow along pretty easily. If some parts are confusing, you can skim through Apple's guides.
Things that are the same:
Design Patterns (target/action, delegate, data source, first responder, etc.)
Objective-C
Interface Builder
Things that are different:
A control can have only one target and action. On the iPhone, you can have one target/action for a touch up inside, touch up outside, etc. On the Mac, there's only one.
NSWindowController for loading xibs (conceptually similar to UIViewController, though)
Edit: Overall, the main different the iPhone has more 'pre-built' UI classes (UINavigationController, UITabBarController, etc.) you can use in your app to make it look nice and pretty (and most importantly, consistent with Apple apps).
I started out with Mac OS development and went to iPhone development. You probably already know the core concepts about how the APIs work. The biggest problem I see developers who transition from iPhone to Mac is getting used all the subtle ways that Mac users expect their apps to work. Things like handling the Page Up and Page Down keys to scroll your view (shame on Tweetie for not supporting this). Or handling multiple windows. Or multiple display sizes (and making sure not to position windows off screen).
For the technical programming questions, Apple's own documentation is the best place to start. For the nuances of designing for the Mac OS and doing things right, there isn't a book or web site that has all the answers, as far as I know. Mostly that comes from using apps that are Apple Design Award winners and imitating what they do.

Is it better to start how to code in Objective-C for the desktop before you venture to the iPhone?

I have C/C++ experience so learning Objective-C is not completely foreign to me. However, I noticed that writing an application for the iPhone is not as simple as for the desktop platform. Should I start to get some solid experience on the desktop before I jump into the iPhone? I am not a commercial developer, and merely doing this as a hobby and for learning purposes. What is your recommendation?
For what it's worth, a comment from another newcomer to iPhone development...
My background - I was a C Programmer about 15 years ago and since then I've moved around technologies quite a bit - I'm now an Adobe Flex developer in my day job. By night, however, I'm trying to transform myself into an iPhone developer ;-)
So I bought a book on iPhone SDK development - 'iPhone in Action'. I also bought 'Programming in Objective-C 2.0'. I thought I'd be set with these two but after a couple of days reading and working through exercises it was clear that... I was hopelessly lost!
So I bought another book - this time, 'iPhone SDK Development' from the Pragmatic Bookstore - this is a work in progress book but looked 'right' for me. Turns out this book took me further - it's a great piece of work - however, the early chapters were paced nicely and I was able to follow along and then all of a sudden they began to assume I could recall perfectly the lessons learnt and the procedures followed in earlier chapters and I began yet again to flounder a little - the worst thing I find when trying to learn something from a book is to have to jump around from place to place constantly to make any sense of what I'm meant to be doing.
So (yeah, I know... but bear with me...) I bought ANOTHER book... 'Beginning iPhone Development' from APress. Now THIS book assumes nothing. For a beginner to iPhone development, THIS book hits the target. No jumping around necessary and finally I found I was progressing.
However, what I'm finding is that ALL three books in CONJUNCTION with one another really seem to provide me with a more complete picture - collectively I have a great set of tutorial and reference material. The Objective-C book I've not touched on so much yet but I expect that to be what I need it to be - a reference manual for the language; I'll not need that until I'm much deeper in to the guts. I'm slowly emerging from that horrible "in at the deep end and I can't swim very well" feeling to one where I can at least tread water. Hopefully with a bit more paddling I'll be able to touch the bottom - certainly my confidence is returning ;-)
So anyway, to address the original question - personally if I did this all over again, I don't think I would have gained anything by starting out building for the Mac first and then to the iPhone. I would definitely have lost less hair had I bought the APress book first - that for me was the book that made complete sense of everything for me. I think then the 'iPhone SDK Development' Pragmatic book was the best backup/followup book. This is the path I've suggested to a colleague and I'm confident it's a good one.
Hope this helps!
Jamie.
It is definitely helpful to have some Cocoa experience before going into iPhone development, but I personally wouldn't sweat it that much. Learning how to use the Cocoa framework and getting comfortable with it in general would be beneficial, but there are certain aspects of desktop Cocoa programming that you will find have little relevance to iPhone programming (e.g. user interface design with Interface Builder). Also, there are unique aspects of iPhone programming that normal Cocoa programming won't really prepare you for. (Some experienced Cocoa devs still had somewhat of a learning curve when they first got into iPhone development.)
In other words, I would recommend learning the fundamentals of normal Cocoa development, but you won't need to become a Cocoa guru in order to learn how to develop iPhone apps.
If your only intend in coding desktop apps is to get familiar with Objective-C, cocoa and Xcode, it is not worth.
You will learn nothing starting with desktop apps that you would not learn getting straight in iPhone apps. Desktop apps are not simpler than iPhone apps, they are just different.
It may even be counter productive if you learn specificities of desktop apps that you will have to 'unlearn' on iPhone development.
Of course, if your intend is to get into the OS X ecosystem, learning both would be very valuable.
In some ways the iPhone is simpler for a C/C++ developer. No garbage collection is the big one. If you start on the desktop and get used to GC, you'll have a hell of a time when you hit the iPhone.
There is no need to or benefit in learning desktop Cocoa before moving to UiKit on the iPhone. There may be some disadvantages.
Although there are a lot of concepts shared between UIkit and Cocoa they are no easier to learn on the desktop. And at the end of the day, they are not identical. Similarly there are a lot of frameworks that are shared between iPhone and the desktop - in these cases, there is nothing to be gained from using the desktop versions before their equivalents on the phone.
There some difficulties that you will face only on the iPhone and things that might make things easier on the desktop:
you develop on the target machine, on iPhone, target management is more difficult
iPhone is memory and processor contstrained
there is no Garbage collection on iPhone
My view is that it is a good idea to get used to these issues as soon as possible rather than getting into "bad habits" on the desktop (or just generating misunderstanding when you go to iPhone).
If you have any development experience you know that all languages are alike, and you only know if you fully grok it only by working with it.
My approach to learning a new development environment is to pick a problem you want to solve (and since the phone is in your pocket all the time, you're likely to have some idea), and bang your head on it.
There's a ton of apple sample code, answers here and on other sites. Start with a working sample app that is not too far from what you want to do, and tweak it over time. You are gratified by a working app, find out about problems right away, and can learn small bits at a time.
The biggest challenge is not learning Cocoa and/or Cocoa Touch but Objective-C. Once you have the fundamentals Cocoa is simple and similar to many other OO frameworks.
I suggest:
The Wikipedia article on Objective-C: https://en.wikipedia.org/wiki/Objective-C
"External links" at Wikipedia for some fundamentals of the language
Hot Cocoa podcast: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=294050835
Cocoa Cast podcast: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=298413458
Then the Stanford iPhone Application Programming course on iTunes U: https://podcasts.apple.com/us/podcast/iphone-application-programming-spring-2009/id384233222
Join the developer program at Apple: https://developer.apple.com

Interface Builder for iPhone tutorial

Anyone know of some tutorial material for how to use Interface Builder for iPhone development? I can find sample projects and stuff and that's extremely helpful, but they do not reveal how things where setup in Interface Builder.
The Pragmatic Programmers have some screencasts on building an iphone application. I haven't watched those, but I have watched some of their other videos and they were pretty good.
They've also got a free getting started with Xcode and Interface Builder episode, which may be what your looking for.
You can actually get a lot out of these screen-casts which are free as of now:
http://www.cocoacast.com/?q=blog/1
Note that they are very 'connected' to the Aaron Hillegass book on Mac programming (which is also a great resource). Some of them show him using IB (but of course not all). The book is more focused on Mac then iPhone, but if you're just trying to get going it's a great point of departure. I'm working on my first iPhone project and had never programmed with Objective C, XCode IDE and Interface Builder. I read the first 200 pages and used Apple's docs after that. Now it's been several months and I found the above screen-cast and wished I had that getting started! Good luck
The Pragmatic Programmers book iPhone SDK Development includes some Interface Builder walkthroughs.

iPhone - Getting Started [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I have found the "Getting Started" documents for developing apps on iPhone.
I wanted the community's opinion on what I should know/learn (in terms of languages or concepts)?
How long would it take for a moderate programmer to learn and build an app that manages a list, connects to certain websites, etc?
How to get an app I made onto the iPhone? Just ZIP then install with .ipa file?
I wanted the community's opinion on what I should know/learn (in terms of
languages or concepts)?
You will be using Objective-C and Cocoa. These are fairly strange concepts to crasp if you have not done MAC programming before, but after a short while you will probably fall in love with them. The most important concept to remember with iPhone development is memory management as the device has no concept of garbage collection.
How long would it take for a moderate programmer to learn and build
an app that manages a list, connects
to certain websites, etc?
Not too long. There are a multitude of example applications on the internet, and many helpful folk on stackoverflow.com
How to get an app I made onto the iPhone? Just ZIP then install with
.ipa file?
You will need to download the SDK, create an app using xcode on the mac (or similar environment for windows if there is one) - you can test with simulator without giving apple anything, but in order to legitimately test on device you need to become an apple developer.
However If you jailbreak your device, you will be able to follow one of several methods to get your application on the iphone bypassing apples restrictions.
The whole iPhone UI development (UITableView etc) is based around the MVC (Model-View-Controller) pattern, so a good understanding of that is vital.
Memory management is also vital and can be a little cumbersome to start off with. I have not long started so can not give you a good description here without making a fool of myself :). Apple Memory Management
Finally the development environment can be a little wierd to start off with. Especially hooking up the view controller and interface elements. So check that out.
Then its basically looking through the tutorials on the iPhone developer website and the internet to learn the intracacies of the different UI elements and controllers (tables, textboxes etc).
You will need to pay for the iPhone Developer program to legally use your iPhone to debug your applications (although the Xcode dev environment comes with a simulator). Submitting the application to the app store allows access by everyone. Full details for doing this are available after paying your money. There are other ways you can get apps on the iPhone but I will not provide details for doing that - search the internet.
I would say that looking through the documentation and following tutorials will get you far enough to start building applications. This should not take to long. A good book may also help you out here, try the iPhone Developers Cookbook, which gives good well discussed and broken down examples about specific issues and broader coverage of things like tables etc.
Objective-C. Pay close attention to memory management, i.e., retain, release and autorelease.
Took me about a month (part time) to get something that pretty much worked. And then another month to refactor after learning what I'd done wrong the first time. This was while the NDA was in place so it would probably be easier now.
You need to join the iPhone Developer Program. Installing a development app is just a matter of running from XCode once you have you certificates sorted. (Check the iTunes Connect documentations. It's pretty good.)
Installing on someone elses iPhone is a matter of figuring out ad-hoc deployment (hard) or uploading to iTunes (easy).
First of all: buy a mac if you don't have one already, the windows tooling pipeline is basically non-existant. And trying to run OSX on non-apple harware is illegal in most situations.
Download the iPhone SDK. http://developer.apple.com/iphone/ should have everything you need.
Objective-C is a little bit on the strange side but a moderate programmer should be able to pick it up quite quickly.
Installation: i have no idea sorry...use the app store ;)
Learn objective C and work with Cocoa. There are far more examples of that floating around than iPhone code. Depending on what environment you are used too, Xcode and the experience of developing for the iPHone can be quite a change so get ready to buy some books and spend lots of time scratching your head!
Learn how to navigate Apple's docs.
For example UIView Class Reference.
Took me a little while to get savvy. XCode also has an excellent documentation browser integrated into the IDE. Once you can translate what the docs are telling you into code, the whole API opens up.
Use the Research Assistant in XCode. (Under Help Menu) That thing rocks my world. Highlight a class like ABRecordRef and it will give you a quick synopsis of what it is and how to use it, with links to the reference docs.
The one bad thing about Apple's docs is that they don't have clear examples of how to call a method in the discussion of the method. This is a glaring oversight, IMO. So many time I just wish there was a simple example for how to use something and I wind up going to Google for it.
The above information is quite good, but I'd add that getting familiar with the documentation within XCode is very valuable. This means you need to go to the DOC SETS part of the Developer Documentation window and make sure you have the documentation for the iPhone OS you're coding for. I spent a bunch of time writing code that depended on methods in NSObject that are available in Cocoa but not on the iPhone OS.