I have an iOS (Obj-C) project that uses ARC (Automatic Reference Counting). According to Apple Documentation, and pure experimentation, you cannot have statements such as:
[UIThingamabob release];
This was previously the way to release items after being allocated or retained. Now I do know that you have to manage how IB objects are created in the
@property (nonatomic, retain) IBOutlet ...
portion of your header file.
I’ve been using the above statement as it is (with the nonatomic and retain (or strong- what’s the difference anyway, how are they used?) properties) for all of my IB items. When I test on an iOS Device, I’ll randomly get a UIAlertView (that I created for debugging purposes) that only displays when the didRecieveMemoryWarning event is fired.
Some of my BETA testers are bombarded with these views nonstop until they manage to quit the app.
My question is, what do I put in the didRecieveMemoryWarning event since I can’t release objects? If there isn’t anything to put there, then are these errors occurring due to the way I create my objects with the @property function?
You should use
@property (nonatomic, weak) IBOutlet...for all of your IBOutlets. If you use strong, the outlet is retained by the view controller and by it’s superview. When the view disappears, the view controller still has a reference to that outlet which is no longer visible. You could set the outlet property to nil in-viewDidUnloador by using weak setting the pointer to nil is done automatically when the view disappears.