Objective C has a lot of run time overhead due to its "message passing" paradigm. So any time you need to use a Cocoa API, it's pretty slow.
I hear over and over from experienced Obj-C guys that it's almost never message passing that's your bottleneck. (Just like how it's almost never your compiler that's wrong, it's almost always that you really did forget a semicolon.) Keep in mind that most of Mac OS X is Objective-C and it seems competitive performance-wise. I believe the Objective-C runtime even has some caching to make the performance of frequently-sent messages almost on the order of a function call.
Asm guys used to say the same thing about new-fangled languages like C: all that code that pushes/pops the function call stack was a huge slowdown. In practice, you just don't ever spend your time in function call stack manipulation code.
I hear over and over from experienced Obj-C guys that it's almost never message passing that's your bottleneck. (Just like how it's almost never your compiler that's wrong, it's almost always that you really did forget a semicolon.) Keep in mind that most of Mac OS X is Objective-C and it seems competitive performance-wise. I believe the Objective-C runtime even has some caching to make the performance of frequently-sent messages almost on the order of a function call.
Asm guys used to say the same thing about new-fangled languages like C: all that code that pushes/pops the function call stack was a huge slowdown. In practice, you just don't ever spend your time in function call stack manipulation code.