Objective-C檢視原始碼討論檢視歷史
Objective-C |
Objective-C,通常寫作ObjC或OC和較少用的Objective C或Obj-C,是擴充C的面向對象編程語言。它主要使用於Mac OS X和GNUstep這兩個使用OpenStep標準的系統,而在NeXTSTEP和OpenStep中它更是基本語言。GCC與Clang含Objective-C的編譯器,Objective-C可以在GCC以及Clang運作的系統上編譯。1980年代初布萊德·考克斯(Brad Cox)在其公司Stepstone發明Objective-C。他對軟件設計和編程里的真實可用度問題十分關心。Objective-C最主要的描述是他1986年出版的書 Object Oriented Programming: An Evolutionary Approach. Addison Wesley. ISBN 0-201-54834-8.
簡介
Objective-C是非常實用的語言。它是一個用C寫成很小的運行庫,令應用程序的尺寸增加很小,和大部分OO系統使用極大的VM執行時間會取代了整個系統的運作相反。Objective-C寫成的程序通常不會比其原始碼大很多。而其函式庫(通常沒附在軟件發行本)亦和Smalltalk系統要使用極大的內存來開啟一個窗口的情況相反。因此,Objective-C它完全兼容標準C語言(C++對C語言的兼容僅在於大部分語法上,而在ABI(Application Binary Interface)上,還需要使用extern "C"這種顯式聲明來與C函數進行兼容),而在此基礎上增加了面向對象編程語言的特性以及Smalltalk消息機制。Objective-C的最初版本並不支持垃圾回收。在當時這是爭論的焦點之一,很多人考慮到Smalltalk回收時有漫長的死亡時間,令整個系統失去功用。Objective-C為避免此問題才不擁有這個功能。雖然某些第三方版本已加入這個功能(尤是GNUstep), Apple在其Mac OS X 10.3中仍未引入這個功能。
評價
Apple在其Mac OS X 10.3中仍未引入垃圾回收這個功能。不過令人欣慰的是在Apple發布的Xcode4中已經支持自動釋放(不等同於嚴格意義上的垃圾回收,因為兩者機制不同)。在Xcode4中的自動釋放,也就是ARC(Automatic Reference Counting)機制,不需要用戶手動去Release一個對象,而是在編譯期間,編譯器會自動幫你添加[NSObject release]。另一個問題是Objective-C不包括命名空間機制(namespace mechanism),取而代之的是程序設計師必須在其類別名稱加上前綴,時常引起衝突。在2004年,在Cocoa編程環境中,所有Mac OS X類和函數均有"NS"作為前綴,例如NSObject或NSButton,以表明它們屬於Mac OS X核心(使用"NS"是由於這些類和函數在NeXT OpenStep開發時定下的)。[1]
參考文獻
- ↑ Objective-C搜狗