Objective-C
对象。例如下列属于Objective-C
:
- NSTimer
- NSString
- int, float
- NSMutableArray
但是这些属于Cocoa:
- UILabel
- UIColor(?)
- UIView
需要明确的是:
Cocoa Touch
== iPhone 开发
Cocoa
== Mac OS X 开发
Objective-C
对象。例如下列属于Objective-C
:
但是这些属于Cocoa:
需要明确的是:
Cocoa Touch
== iPhone 开发
Cocoa
== Mac OS X 开发
你有一点错误。
NSTimer、NSString、NSMutableArray都是Cocoa框架的一部分。int
和float
实际上是C语言的,但由于Objective-C是C语言的一个严格超集,所以你可以在Objective-C代码中使用它们。
纯Objective-C只需要链接Objective-C运行时库,不需要链接其他任何框架或库。Cocoa是一个包括NSObject和NSString等内容的框架。其他框架,比如AppKit,扩展了Cocoa框架。
在纯Objective-C中编码通常意味着从称为Object
的根对象派生,而不是NSObject。像@implementation
、@interface
、@selector
等内容是Objective-C对C语言的扩展,这些内容在所有Objective-C源代码中都很常见,无论是纯Objective-C还是其他类型的Objective-C源代码。如果你想要编写纯Objective-C代码,就不能使用除自己从Object
派生出的对象之外的任何东西。
#import <objc/Object.h>
虽然Cocoa Touch是用于iPhone开发的,而“普通”的Cocoa则是用于Mac OS X开发的,但它们并没有太大的区别,并且共享大部分基本类。
在 iPhone 开发中,您不需要关心是否使用纯Objective-C或Cocoa。Cocoa在iPhone上是一等公民,避免使用它并没有任何好处。
Objective-C和单纯的C子集之间存在轻微差异。对象分配和方法调用的开销比堆栈分配的结构和直接函数调用要高,但99%的时间内您也不需要关心这个问题(不要试图过早优化!)