国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁(yè) > 營(yíng)銷資訊 > 信息時(shí)代 > Objective-C優(yōu)點(diǎn)及缺點(diǎn)

Objective-C優(yōu)點(diǎn)及缺點(diǎn)

時(shí)間:2022-02-08 13:30:01 | 來(lái)源:信息時(shí)代

時(shí)間:2022-02-08 13:30:01 來(lái)源:信息時(shí)代

Objective-C是非常'實(shí)際'的語(yǔ)言。它使用一個(gè)用C寫(xiě)成、很小的運(yùn)行庫(kù),只會(huì)令應(yīng)用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時(shí)間會(huì)取代了整個(gè)系統(tǒng)的運(yùn)作相反。ObjC寫(xiě)成的程序通常不會(huì)比其原始碼大很多。而其函式庫(kù)(通常沒(méi)附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來(lái)開(kāi)啟一個(gè)窗口的情況相反

Objective-C的最初版本并不支持垃圾回收。在當(dāng)時(shí)這是爭(zhēng)論的焦點(diǎn)之一,很多人考慮到Smalltalk回收時(shí)有漫長(zhǎng)的'死亡時(shí)間',令整個(gè)系統(tǒng)失去功用。Objective-C為避免此問(wèn)題才不擁有這個(gè)功能。雖然某些第三方版本已加入這個(gè)功能(尤是GNUstep),Apple在其MacOSX10.3中仍未引入這個(gè)功能。不過(guò)令人欣慰的是在Apple發(fā)布的xCode4中已經(jīng)支持自動(dòng)釋放啦,我不敢冒昧地說(shuō)那是垃圾回收,因?yàn)閮烧邫C(jī)制不同,在xCode4中的自動(dòng)釋放,也就是ARC(AutomaticReferenceCounting)機(jī)制,是不需要用戶手動(dòng)去Release一個(gè)對(duì)象,而是在編譯期間,編譯器會(huì)自動(dòng)幫你添加那些以前你經(jīng)常寫(xiě)的。

另一個(gè)問(wèn)題是ObjC不包括命名空間機(jī)制(namespacemechanism)。取而代之的是程序設(shè)計(jì)師必須在其類別名稱加上前綴,時(shí)常引致沖突。在2004年,在Cocoa編程環(huán)境中,所有MacOSX類別和函式均有'NS'作為前綴,例如NSObject或NSButton來(lái)清楚分別它們屬于MacOSX核心;使用'NS'是由于這些類別的名稱在NeXTSTEP開(kāi)發(fā)時(shí)定下。

雖然Objective-C是C的母集,但它也不視C的基本型別為第一級(jí)的對(duì)象。

和C 不同,Objective-C不支援運(yùn)算子多載(它不支持ad-hoc多型)。亦與C 不同,但和Java相同,Objective-C只容許對(duì)象繼承一個(gè)類別(不設(shè)多重繼承)。Categories和protocols不但可以提供很多多重繼承的好處,而且沒(méi)有很多缺點(diǎn),例如額外執(zhí)行時(shí)間過(guò)重和二進(jìn)制不兼容。

由于Obj-C使用動(dòng)態(tài)運(yùn)行時(shí)類型,而且所有的方法都是函數(shù)調(diào)用(有時(shí)甚至連系統(tǒng)調(diào)用(syscalls)也如此),很多常見(jiàn)的編譯時(shí)性能優(yōu)化方法都不能應(yīng)用于Obj-C(例如:內(nèi)聯(lián)函數(shù)、常數(shù)傳播、交互式優(yōu)化、純量取代與聚集等)。這使得Obj-C性能劣于類似的對(duì)象抽象語(yǔ)言(如C )。不過(guò)Obj-C擁護(hù)者認(rèn)為既然Obj-C運(yùn)行時(shí)消耗較大,Obj-C本來(lái)就不應(yīng)應(yīng)用于C 或Java常見(jiàn)的底層抽象。

關(guān)鍵詞:缺點(diǎn),優(yōu)點(diǎn)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉