I've messed with iPhone dev for a few months now, and my assessment is three things: 1) Great tools, including debugging, performance testers, and XCode/IB. 2) Weak Unit Testing framework. No async support. Very frustrating to get compiling right. 3) No dependency injection. The unit testing stuff annoys me the most because I'm a TDD guy, but unit testing for iPhone apps is beyond frustrating. First, if you have no tests yet, you get a darn test failure. WTF? Second, the results are in the build process. Clunky. Third, async testing doesn't work. Fourth, I'm often puzzled why things aren't compiling. Adding frameworks, which is what I tend to suspect is the problem, only makes more errors. And, finally, the big number five, pooooooooor documentation on the whole process and when you find some, it's likely an outdated version of XCode. And where the HELL is my green bar? I have debated writing a better, runtime unit testing framework. However, I am also eyeing doing some research into constructing better iPhone apps. In my experience of writing 5 different apps, it seems that we're resigned to using Singleton models (BLECH!) and no dependency injection. And, no, while leveraging the delegate gets us past many problems, it is only a workaround...it's bad code to make everything depend on [[UIApplication sharedApplication] delegate]. So, I have two questions: 1) What solutions have you come up for these problems? 2) Is it worth my time to research and come up with my own? Would LOVE some feedback on this.