I am about 8 months into developing with Objective C and XCode for the iPhone and I thought I would give a list of the pros and cons.

  • The navigation controllers rock.  There is no better navigation paradigm out there.
  • Watching your code run on an iPhone or iPad is a truly exciting event.
  • Adequate string handling

  • Sudden deallocation of an object even when that object is marked with retain.  This is a random yet completely frustrating event.  This problem tends to be less of a problem when using ARC, but if you are like me you have old code to maintain which does not use ARC and would take too much time to convert and debug.
  • Brackets instead of parenthesis - come one with the horrible smalltalk syntax.
  • In today's world of screaming hardware do we really need to allocate and deallocate our own objects?
  • XCode is horrific in comparison to Eclipse and VS.
  • Variable values displayed in the debug area are often just plain wrong.  Using NSLog shows the real values of the variables.
  • Debugging takes way too long! 
  • No overloading?  Yes, that's right, no overloading.
  • Dangling pointers even when the object is marked with retain
  • Poor examples on the Apple site including an example of how to create a singleton class, which as it turns out is totally incorrect.
  • No low level try catch block.  That's right, try catch is mostly worthless and should probably  be removed from the language.
  • Did I mention garbage collection is not present?
  • Method names are far too long and hard to remember.  Keep Google up and running at all times because you will forget the names.
  • You can use dot operator syntax with object.property, but not object.method

I could go on  but I think you get the point.