Objective-C和Cocoa有什么区别?

时间:2009-01-12 16:16:05

标签: objective-c cocoa

我只是在学习Mac的Objective-C / Cocoa编程。我一直在使用的所有教程,书籍,博客,播客等真正涵盖了两者。有没有一种简单的方法可以判断哪些是香草Objective-C,哪些来自Cocoa?

4 个答案:

答案 0 :(得分:64)

Objective-C是一种语言......它定义了所有的东西,比如用于定义对象的关键字,消息传递对象的语法,以及类似的东西。

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

这些框架(Cocoa)定义了所有易于使用和与操作系统交互的对象,以及许多功能。例如,Cocoa定义了NSStringNSObject之类的内容。 Cocoa当前可以与其他语言绑定一起使用,例如python或ruby,并且过去也可以与Java一起使用。因此,如果您使用Cocoa和Java,您仍然会得到一个NSString对象,但您可以在Java应用程序中调用它并使用它。

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

答案 1 :(得分:29)

Objective-C是语言本身。

Cocoa,以前的NextStep,是位于Obj-C之上的API和运行时。从NS开始的任何事情(对于NextStep)都是Cocoa的一部分,而不是语言的一部分。

答案 2 :(得分:6)

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

答案 3 :(得分:4)

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

然而,在实践中它没什么区别。 Cocoa是事实上的Objective-C标准库。在没有Cocoa的情况下使用Objective-C的唯一平台是Portable Object Compiler,我猜也许有三个人仍在使用它。