views:

106

answers:

2

Hi,

I'm thinking of starting to build software for Apple products, specifically the iPhone.

Having built software atop several platforms in the past - Linux/Unix, Android, .Net, Win32 - I know that every platform has a certain "way" of looking at it that makes building software for it simple.

For instance, Win32 communicates with an application mainly by sending messages that are usually read in a message pump loop while .Net raises events, and Android has intents that are sent to activities and intent-receivers. These are all similar concepts, but they have subtle differences that suggest, and sometime force, different design.

If you came to building Apple based software from a different platform, what were the key concepts that you found different? How were they different from what you knew? How did it affect the design of your software?

Thanks,
Asaf

+1  A: 

I think that you will find OS X is very similar to everything else. Really the biggest hurdle for me was just Objective-C. From straight C++/Java it took me time to get it right. Well and Interface Builder too. I still prefer to code my interface "by hand". Events and such just clicked with what i knew from other languages.

+1  A: 

You should take a look at Apple's documentation - Cocoa Design Patterns

The ones you use the most are target-action, delegate, categories, and of course MVC. Personally, I came over to Objective C and Cocoa from the Java world. The thing I found to be the most foreign were categories, but I had some knowledge of decorating a class as such from my time in javascript. But I ignored them at the start, but learned that that was a mistake the hard way, when I tried to extend UITableViewController.

bpapa