2009-01-12 95 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