These aren't necessarily specific to iPhone development, but without them, you will not ever get it.
Pointers - know what a pointer is. Know why we need the dynamically allocated memory versus statically allocated memory. (I know this may sound trivial, but in my experience, this is the #1 thing that newcomers have the most trouble with) This is because you'll never* deal with raw objects in Objective-C. You always deal with object references. (ie, you never deal with an NSString
, but always an NSString *
) However, there are things that look like objects, but aren't actually. NSRect
s are structs and they can be stack-allocated. NSInteger
is simply a typedef
for a primitive int
. If you don't know what a pointer is, you'll go crazy wondering when you're supposed to put in a *
and when you're not.
Memory Management - the iPhone does not have garbage collection. You must manually manage your memory. Accept that and move on. The rules for memory management conventions in Objective-C are trivial. Memorize them, and always remember to use them.
* the only time you'll deal with stack-allocated objects are blocks (^{ ... }
) or when you're doing something fiendishly devious.