From my dabbling and learning IOS development, the biggest problem that I expect my code will have is memory leaks. I can understand that as a very limited embedded computer, its an engineering tradeoff of features vs memory/time/code/bugs/... but the idea of a programmer managing his own memory makes me shudder.
Memory management in iOS isn't that bad or difficult, retain and release policy is really clear. Maybe we are spoiled by garbage collected languages.
All you need are three or four rules when it comes to memory management, crystal clear.
You can found and solve your memory leaks using Static Analyzers and with Instrument tools.
Using Build and Static Analyze, you will get all the possible leaks in your code at compile time.
Using Instrument tools, you can find run time leaks. These are very useful to handle memory management.