2009-01-12 85 views
39

我只是在为Mac学习Objective-C/Cocoa编程。我一直在使用的所有教程,书籍,博客,播客等都真的涵盖了两者。有没有一种简单的方法来分辨哪些是香草Objective-C和哪些来自Cocoa?Objective-C和Cocoa有什么区别?

回答

61

Objective-C是语言...它定义了所有的东西,比如定义对象的关键字,消息对象的语法,类似的东西。

Cocoa是一个开发框架(它实际上是一个伞形框架,它结合了其他三个框架,Foundation,AppKit和CoreData)。

这些框架(Cocoa)定义了所有可以很好地使用操作系统和与操作系统交互的对象,以及许多函数。例如,可可定义了诸如NSStringNSObject之类的东西。 Cocoa目前可以与其他语言绑定一起使用,例如python或ruby,也可以用于Java。所以,如果你使用Cocoa和Java,你仍然会得到一个NSString对象,但是你可以在Java应用程序中调用和使用它。

没有链接到其中一个Cocoa框架,Objective-C只带有一个非常基本的Object类作为预定义的根类。

+0

谢谢!我特别好奇基金会,NSString和NSObject之类的东西 – 2009-01-12 17:08:57

5

当然,这很容易 - Objective-C是语言,Cocoa是你用来为你的Mac App创建的API /库。

28

Objective-C是语言本身。

可可,以前称为NextStep,是位于Obj-C之上的API和运行库。任何以NS开头的(用于NextStep)都是Cocoa的一部分,而不是该语言的一部分。

+9

我一直想知道那个NS前缀的含义是什么! – 2009-01-12 16:53:32

4

查看/ usr/include/objc/- 里面有纯粹的Objective-C。其他一切都是可可。你可能会注意到你几乎从不直接使用任何东西。

但是,实际上它没有什么区别。可可是事实上的Objective-C标准库。 Objective-C在没有可可的情况下使用的唯一平台是Portable Object Compiler,我猜可能有三个人仍在使用它。

+5

我认为现在只有两个人......一个绿色咖啡杯的人最近已经转向了C#...... – 2009-01-12 17:07:14