I am leaning Cocos2D for iPhone. I am thinking why we should use cocos2D instead of UIKit to develop games.
Here are the reasons:
1. Cocos2D is built on OpenGL. You may not know OpenGL.
2. Cocos2D supports tiled map.
3. Cocos2D helps you reduce memory cost by supporting atlas images and providing CCSpriteBatchNode.
4. Cocos2D supports parallax backgrounds.
5. Cocos2D has more animations and transitions.
6. Cocos2D supports particle systems.
Cocos2D provides physics engines, but I don't think it is one of the reasons we should use Cocos2D. Because these physics engines are not designed for Cocos2D only. If you use UIKit, you can use these physics engines too.