On Mac OS X, IBOutlets are connected like this:
- Look for a method called set<OutletName>:. If it exists call it.
- If no method exists, look for an instance variable named <OutletName>, set it without retaining.
On iPhone OS, IBOutlets are connected like this:
- call [object setValue:outletValue forKey:@”<OutletName>”]
The behavior of set value for key is to do something like this:
- Look for a method called set<OutletName>:. If it exists call it.
- If no method exists, look for an instance variable named <OutletName>, set it and retain it.
If you use a property, you’ll fall into the “Look for a method called set<OutletName>:…” case on both platforms. If you just use an instance variable, then you’ll have different retain/release behavior on Mac OS X VS iPhone OS. There’s nothing wrong with using an instance variable, you just need to deal with this difference in behavior as you switch between platforms.
Here’s a link to full documentation on just this topic.
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW6