In regards to iPhone development, how do you now when your using a Cocoa vs pure Objective-C
objects. For example, the following are Objective-C
:
But these are Cocoa:
And to be clear, does
Cocoa Touch
== iPhone development
Cocoa
== Mac OS X development
You've got it a little wrong.
NSTimer, NSString, NSMutableArray are all Cocoa. int
and float
are actually C, but since Objective-C is a strict superset of C, you are able to use them in your Objective-C code.
Pure Objective-C requires linking only to the Objective-C runtime library and no other frameworks or libraries. Cocoa is a framework that includes things like NSObject and NSString. Other frameworks, like AppKit, extend the Cocoa framework.
Coding in pure Objective-C usually means deriving from the root object called Object
and not NSObject. Things like @implementation
, @interface
, @selector
etc. are the Objective-C extensions to C and these are what are common in all Objective-C source, pure or not. If you want to code in pure Objective-C you cannot use anything other than your own objects derived from Object
.
#import <objc/Object.h>
As already pointed out, The NS* classes are actually Cocoa, not Objective-C. Objective-C is a language, while Cocoa is a framework (an implementation of OpenStep). This framework can be considered to be the "stdlib" equivalent of C++. The UI* classes are Cocoa Touch, another framework created for the iPhone.
As to the last question, yes, Cocoa Touch is for the iPhone only. Cocoa is for Mac OS X development. However, as stated above, Cocoa is an OpenStep implementation. Alternatives to Cocoa exist, such as GNUstep and Cocotron. These alternative frameworks allow to use the same code on multiple platforms. The OpenStep frameworks are therefor not only for Mac OS X development, but can also be for Linux and Windows.
Another thing to note is that other Objective-C runtimes are different. There is no single Objective-C specification. The Portable Object Compiler is yet another way of doing this. Since Apple is the dominant user of Objective-C, and it controls Cocoa, it's considered the de facto Objective-C implementation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With