iPhone development tips
- Distinction between calling [self.property release] and self.property = nil
- The latter will allow you to assign the variable later and should generally be used when you want to "clear" a variable for memory saving purposes but will have a need to assign a value to it again sometime in the future. release will completely invalidate the object and attempting to call anything on it afterwards will result in a EXC_BAD_ACCESS error every time. What does this mean in the grand scheme of things? You will most likely use release in only one place in your code – the object's dealloc method.
- Watching out for deallocation and unloading of views
- Keep in mind that if a bunch of view controllers nested one above the other, there's a bunch of unloading and deallocating happening when these views disappear (hopefully, as you should be keeping your memory usage to a minimum). In one of my view controllers, I was overfreeing controller properties because I attempted to free them inside both viewDidUnload: and dealloc methods. Just remember that a view should only be getting dealloc'ed after it's been unloaded, so you only need to free most things in viewDidUnload:.
- Passing viewWillLoad/viewDidLoad/viewWillAppear/viewDidAppear/etc methods to child view controllers
- Say you have a view controller which manages a child view controller. The child view controller's viewWillAppear and related notification methods will *not* be called automatically by the OS for you. Your parent view controller needs to call those methods manually.
- Xcode is unable to connect to your device for some reason
- Sometimes Xcode will show your phone as being connected but will be unable to initialize it for development purpose for some bizarre reason. Simply restart your phone to fix the problem.