當前位置:成語大全網 - 書法字典 - Objective-C和C語言的異同。

Objective-C和C語言的異同。

Objective-C,通常寫成ObjC,很少用作Objective C或Obj-C,是壹種擴展C的面向對象編程語言,主要用於Mac OS X和GNUstep這兩個使用OpenStep標準的系統,是NeXTSTEP和OpenStep中的基礎語言。Objective-C可以在gcc運行的系統中編寫和編譯,因為gcc包含壹個Objective-C編譯器。

1歷史記錄

65438+20世紀80年代初,Brad Cox在他的公司Stepstone發明了Objective-C。他非常關心軟件設計和編程中真正的可用性。

Objective-C的主要描述是他的書《面向對象編程:進化方法》。艾迪森.韋斯利。ISBN 0-201-54834-8出版於1986。

2語言分析

Objective-C是壹門非常實用的語言。它使用了壹個非常小的用C寫的運行時,只會很小的增加應用程序的大小,與大多數OO系統用壹個巨大的VM執行時間來代替整個系統的運行相反。ObjC編寫的程序通常不會比其原始代碼大多少。而它的函數庫(通常不依附於軟件分發)也是Smalltalk系統需要使用大量內存來打開壹個窗口的情況的反面。

Objective-C的原始版本不支持垃圾收集。當時這是爭論的焦點之壹。許多人認為Smalltalk回收時有壹個很長的“死亡時間”,這使得整個系統毫無用處。Objective-C沒有這個函數來避免這個問題。雖然壹些第三方版本增加了這壹功能(尤其是GNUstep),但蘋果並沒有在其Mac OS X 10.3中引入這壹功能。

另壹個問題是ObjC不包括名稱空間機制。相反,程序員必須給他們的類名加上前綴,這經常會導致沖突。2004年,在Cocoa編程環境中,所有Mac OS X類和函數都以“NS”為前綴,如NSObject或NSButton,以明確與Mac OS X核心區分開;使用“NS”的原因是這些類別的名稱是在NeXTSTEP的開發過程中確定的。

Objective-C雖然是C的母集,但並不把C的基本類型作為壹級對象。

與C++不同,Objective-C不支持運算符重載(它不支持即席多態)。它也不同於C++,但和Java壹樣,Objective-C只允許對象繼承壹個類(沒有多重繼承)。類別和協議不僅可以提供多重繼承的許多好處,也有許多缺點,如執行時間過長和二進制不兼容。