关于iPhone开发,你现在如何使用Cocoa与纯Objective-C对象.例如,以下是Objective-C:
的NSTimer
的NSString
int,float
NSMutableArray里
但这些是可可:
的UILabel
的UIColor(?)
的UIView
并且要清楚,是吗
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编写代码,你不能使用除你自己的对象之外的任何东西Object
.
#import
正如已经指出的那样,NS*类实际上是Cocoa,而不是Objective-C.Objective-C是一种语言,而Cocoa是一个框架(OpenStep的一个实现).这个框架可以被认为是C++的"stdlib"等价物.UI*类是Cocoa Touch,另一个为iPhone创建的框架.
至于最后一个问题,是的,Cocoa Touch仅适用于iPhone.Cocoa适用于Mac OS X开发.但是,如上所述,Cocoa是一个OpenStep实现.存在Cocoa的替代品,例如GNUstep和Cocotron.这些替代框架允许在多个平台上使用相同的代码.OpenStep框架不仅适用于Mac OS X开发,也适用于Linux和Windows.
另一件需要注意的是,其他Objective-C运行时是不同的.没有单一的Objective-C规范.该移植对象编译器尚未这样做的另一种方式.由于苹果的Objective-C的主要用户,而且它控制着可可,它认为是事实上的Objective-C实现.