我只是在学习Mac的Objective-C / Cocoa编程。我一直在使用的所有教程,书籍,博客,播客等真正涵盖了两者。有没有一种简单的方法可以判断哪些是香草Objective-C,哪些来自Cocoa?
答案 0 :(得分:64)
Objective-C是一种语言......它定义了所有的东西,比如用于定义对象的关键字,消息传递对象的语法,以及类似的东西。
Cocoa是一个开发框架(它实际上是一个伞形框架,它结合了其他三个框架,Foundation,AppKit和CoreData)。
这些框架(Cocoa)定义了所有易于使用和与操作系统交互的对象,以及许多功能。例如,Cocoa定义了NSString
和NSObject
之类的内容。 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,我猜也许有三个人仍在使用它。