久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Objective-C:修訂間差異

來(lái)自站長(zhǎng)百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索
(以“Objective-C,通常寫作ObjC和較少用的Objective CObj-C,是擴(kuò)充C的面向?qū)ο缶幊陶Z(yǔ)言。它主要使用于Mac OS X和GNUstep這兩...”為內(nèi)容創(chuàng)建頁(yè)面)
?
無(wú)編輯摘要
?
第1行: 第1行:
[[Objective-C]],通常寫作[[ObjC]]和較少用的[[Objective C]]或[[Obj-C]],是擴(kuò)充C的面向?qū)ο缶幊陶Z(yǔ)言。它主要使用于Mac OS X和GNUstep這兩個(gè)使用OpenStep標(biāo)準(zhǔn)的系統(tǒng),而在NeXTSTEP和OpenStep中它更是基本語(yǔ)言。Objective-C可以在gcc運(yùn)作的系統(tǒng)寫和編譯,因?yàn)間cc含Objective-C的編譯器。1980年代初布萊德·確斯(Brad Cox)在其公司Stepstone發(fā)明Objective-C。他對(duì)軟件設(shè)計(jì)和編程里的真實(shí)可用度問(wèn)題十分關(guān)心。Objective-C最主要的描述是他1986年出版的Object Oriented Programming: An Evolutionary Approach. Addison Wesley. ISBN 0-201-54834-8.
[[Objective-C]],通常寫作[[ObjC]]和較少用的[[Objective C]]或[[Obj-C]],是擴(kuò)充[[C]]的面向?qū)ο缶幊陶Z(yǔ)言。它主要使用于[[Mac OS X]]和[[GNUstep]]這兩個(gè)使用[[OpenStep]]標(biāo)準(zhǔn)的系統(tǒng),而在[[NeXTSTEP]]和[[OpenStep]]中它更是基本語(yǔ)言。[[Objective-C]]可以在[[gcc]]運(yùn)作的系統(tǒng)寫和編譯,因?yàn)閇[gcc]]含[[[Objective-C]]的[[編譯器]]。1980年代初布萊德·確斯(Brad Cox)在其公司Stepstone發(fā)明Objective-C。他對(duì)軟件設(shè)計(jì)和編程里的真實(shí)可用度問(wèn)題十分關(guān)心。Objective-C最主要的描述是他1986年出版的Object Oriented Programming: An Evolutionary Approach. Addison Wesley. ISBN 0-201-54834-8.
?
==語(yǔ)言特點(diǎn)==
?
Objective-C用途:編寫iphone應(yīng)用程序的利器 Tiobe在今年7月的編程語(yǔ)言排行榜中有一個(gè)顯著變化是:一直在50名左右的Objective-C排名大幅提升,它的流行當(dāng)歸功于[[iphone]]的成功,因?yàn)閇[Objective-C]]一直被用于編寫iphone應(yīng)用程序。
?
Objective-C是非常實(shí)際的語(yǔ)言。它使用一個(gè)用C寫成、很小的運(yùn)行庫(kù),只會(huì)令應(yīng)用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時(shí)間會(huì)取代了整個(gè)系統(tǒng)的運(yùn)作相反。ObjC寫成的程序通常不會(huì)比其原始碼大很多。而其函式庫(kù)(通常沒(méi)附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來(lá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在其Mac OS X 10.3中仍未引入這個(gè)功能。
?
另一個(gè)問(wèn)題是ObjC不包括命名空間機(jī)制(namespace mechanism)。取而代之的是程序設(shè)計(jì)師必須在其類別名稱加上前綴,時(shí)常引致沖突。在2004年,在Cocoa編程環(huán)境中,所有Mac OS X類別和函式均有NS作為前綴,例如NSObject或NSButton來(lái)清楚分辨它們屬于Mac OS X核心;使用NS是由于這些類別的名稱在NeXTSTEP開發(fā)時(shí)定下。
?
雖然[[Objective-C]]是[[C]]的母集,但它也不視C的基本型別為第一級(jí)的對(duì)象。
?
Objective-C同C++的異同:
?
和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)制不兼容。
==優(yōu)點(diǎn)與缺點(diǎn)==
?
?
Objective-C是非?!皩?shí)際”的語(yǔ)言。它使用一個(gè)用C寫成、很小的運(yùn)行庫(kù),只會(huì)令應(yīng)用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時(shí)間會(huì)取代了整個(gè)系統(tǒng)的運(yùn)作相反。ObjC寫成的程序通常不會(huì)比其原始碼大很多。而其函式庫(kù)(通常沒(méi)附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來(lá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在其Mac OS X 10.3中仍未引入這個(gè)功能。不過(guò)令人欣慰的是在Apple發(fā)布的xCode4中已經(jīng)支持自動(dòng)釋放啦,我不敢冒昧地說(shuō)那是垃圾回收,因?yàn)閮烧邫C(jī)制不同,在xCode4中的自動(dòng)釋放,也就是ARC(Automatic Reference Counting)機(jī)制,是不需要用戶手動(dòng)去Release一個(gè)對(duì)象,而是在編譯期間,編譯器會(huì)自動(dòng)幫你添加那些以前你經(jīng)常寫的[NSObject release]。
?
另一個(gè)問(wèn)題是ObjC不包括命名空間機(jī)制(namespace mechanism)。取而代之的是程序設(shè)計(jì)師必須在其類別名稱加上前綴,時(shí)常引致沖突。在2004年,在Cocoa編程環(huán)境中,所有Mac OS X類別和函式均有“NS”作為前綴,例如NSObject或NSButton來(lái)清楚分別它們屬于Mac OS X核心;使用“NS”是由于這些類別的名稱在NeXTSTEP開發(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)也如此),很多常見的編譯時(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)單代碼==
?
01 #import <Foundation/Foundation.h>
?
02
?
03 int main (int argc, const char * argv[]) {
?
04 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
?
05
?
06 // insert code here...
?
07 NSLog(@"Hello, World!");
?
08 [pool drain];
?
09 return 0;
?
10 }
?
以上是[[Xcode]]開發(fā)環(huán)境下默認(rèn)的.m文件內(nèi)容,就是原生的Hello World范例代碼。
?
關(guān)于hello world的更多擴(kuò)展內(nèi)容
?
在 Objective-C 中 #import 和 #include 的區(qū)別
?
在 Objective-C 中,#import 被當(dāng)成 #include 指令的改良版本來(lái)使用。除此之外,#import 確定一個(gè)文 件只能被導(dǎo)入一
次,這使你在遞歸包含中不會(huì)出現(xiàn)問(wèn)題。使用哪一個(gè)還是由你來(lái)決定。一般來(lái)說(shuō),在導(dǎo)入 Objective-C 頭文件的時(shí)候使用 #import,包含 C 頭文件時(shí)使用 #include。
==未來(lái)發(fā)展==
?
2011年已經(jīng)過(guò)去一半,從市場(chǎng)占有率來(lái)看,有一種語(yǔ)言脫穎而出,那就是Objective-C,相對(duì)2010年增長(zhǎng)了2.68%,亞軍則是Lua,增長(zhǎng)率為1.04% ,如果按這個(gè)走勢(shì)下去,2012年的1月,Lua也將和現(xiàn)在的Objective-C一樣,成為年度語(yǔ)言。
?
2010年的4月,TIOBE世界編程語(yǔ)言排行榜的前20名。Objective-C則從第8一路飆升,超越了C#,占據(jù)了第4的位置。
?
2012年的7月,Objective-C首度超越了C++,取代C++成為排行榜的第3位,成為新科探花。
?
2013年的1月,Objective-C 連續(xù)第 2 年獲得“年度語(yǔ)言”殊榮。年度語(yǔ)言是指在上一年份額增長(zhǎng)最多的語(yǔ)言。Objective-C 最新的份額為 10.283%,比去年同期增長(zhǎng)了 3.37%。
?
?
?
==相關(guān)條目==
*[[C]]
*[[C++]]
*[[JAVA]]
==參考來(lái)源==
*[http://baike.baidu.com/view/459423.htm 參考資料一]
?
?
[[category:程序設(shè)計(jì)語(yǔ)言|O]]

2013年1月19日 (六) 17:24的最新版本

Objective-C,通常寫作ObjC和較少用的Objective CObj-C,是擴(kuò)充C的面向?qū)ο缶幊陶Z(yǔ)言。它主要使用于Mac OS XGNUstep這兩個(gè)使用OpenStep標(biāo)準(zhǔn)的系統(tǒng),而在NeXTSTEPOpenStep中它更是基本語(yǔ)言。Objective-C可以在gcc運(yùn)作的系統(tǒng)寫和編譯,因?yàn)?a href="/wiki/Gcc" title="Gcc">gcc含[[[Objective-C]]的編譯器。1980年代初布萊德·確斯(Brad Cox)在其公司Stepstone發(fā)明Objective-C。他對(duì)軟件設(shè)計(jì)和編程里的真實(shí)可用度問(wèn)題十分關(guān)心。Objective-C最主要的描述是他1986年出版的Object Oriented Programming: An Evolutionary Approach. Addison Wesley. ISBN 0-201-54834-8.

語(yǔ)言特點(diǎn)[ ]

Objective-C用途:編寫iphone應(yīng)用程序的利器 Tiobe在今年7月的編程語(yǔ)言排行榜中有一個(gè)顯著變化是:一直在50名左右的Objective-C排名大幅提升,它的流行當(dāng)歸功于iphone的成功,因?yàn)?a class="mw-selflink selflink">Objective-C一直被用于編寫iphone應(yīng)用程序。

Objective-C是非常實(shí)際的語(yǔ)言。它使用一個(gè)用C寫成、很小的運(yùn)行庫(kù),只會(huì)令應(yīng)用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時(shí)間會(huì)取代了整個(gè)系統(tǒng)的運(yùn)作相反。ObjC寫成的程序通常不會(huì)比其原始碼大很多。而其函式庫(kù)(通常沒(méi)附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來(lá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在其Mac OS X 10.3中仍未引入這個(gè)功能。

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

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

Objective-C同C++的異同:

和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)制不兼容。

優(yōu)點(diǎn)與缺點(diǎn)[ ]

Objective-C是非?!皩?shí)際”的語(yǔ)言。它使用一個(gè)用C寫成、很小的運(yùn)行庫(kù),只會(huì)令應(yīng)用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時(shí)間會(huì)取代了整個(gè)系統(tǒng)的運(yùn)作相反。ObjC寫成的程序通常不會(huì)比其原始碼大很多。而其函式庫(kù)(通常沒(méi)附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來(lá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在其Mac OS X 10.3中仍未引入這個(gè)功能。不過(guò)令人欣慰的是在Apple發(fā)布的xCode4中已經(jīng)支持自動(dòng)釋放啦,我不敢冒昧地說(shuō)那是垃圾回收,因?yàn)閮烧邫C(jī)制不同,在xCode4中的自動(dòng)釋放,也就是ARC(Automatic Reference Counting)機(jī)制,是不需要用戶手動(dòng)去Release一個(gè)對(duì)象,而是在編譯期間,編譯器會(huì)自動(dòng)幫你添加那些以前你經(jīng)常寫的[NSObject release]。

另一個(gè)問(wèn)題是ObjC不包括命名空間機(jī)制(namespace mechanism)。取而代之的是程序設(shè)計(jì)師必須在其類別名稱加上前綴,時(shí)常引致沖突。在2004年,在Cocoa編程環(huán)境中,所有Mac OS X類別和函式均有“NS”作為前綴,例如NSObject或NSButton來(lái)清楚分別它們屬于Mac OS X核心;使用“NS”是由于這些類別的名稱在NeXTSTEP開發(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)也如此),很多常見的編譯時(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)單代碼[ ]

01 #import <Foundation/Foundation.h>

02

03 int main (int argc, const char * argv[]) {

04 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

05

06 // insert code here...

07 NSLog(@"Hello, World!");

08 [pool drain];

09 return 0;

10 }

以上是Xcode開發(fā)環(huán)境下默認(rèn)的.m文件內(nèi)容,就是原生的Hello World范例代碼。

關(guān)于hello world的更多擴(kuò)展內(nèi)容

在 Objective-C 中 #import 和 #include 的區(qū)別

在 Objective-C 中,#import 被當(dāng)成 #include 指令的改良版本來(lái)使用。除此之外,#import 確定一個(gè)文 件只能被導(dǎo)入一 次,這使你在遞歸包含中不會(huì)出現(xiàn)問(wèn)題。使用哪一個(gè)還是由你來(lái)決定。一般來(lái)說(shuō),在導(dǎo)入 Objective-C 頭文件的時(shí)候使用 #import,包含 C 頭文件時(shí)使用 #include。

未來(lái)發(fā)展[ ]

2011年已經(jīng)過(guò)去一半,從市場(chǎng)占有率來(lái)看,有一種語(yǔ)言脫穎而出,那就是Objective-C,相對(duì)2010年增長(zhǎng)了2.68%,亞軍則是Lua,增長(zhǎng)率為1.04% ,如果按這個(gè)走勢(shì)下去,2012年的1月,Lua也將和現(xiàn)在的Objective-C一樣,成為年度語(yǔ)言。

2010年的4月,TIOBE世界編程語(yǔ)言排行榜的前20名。Objective-C則從第8一路飆升,超越了C#,占據(jù)了第4的位置。

2012年的7月,Objective-C首度超越了C++,取代C++成為排行榜的第3位,成為新科探花。

2013年的1月,Objective-C 連續(xù)第 2 年獲得“年度語(yǔ)言”殊榮。年度語(yǔ)言是指在上一年份額增長(zhǎng)最多的語(yǔ)言。Objective-C 最新的份額為 10.283%,比去年同期增長(zhǎng)了 3.37%。


相關(guān)條目[ ]

參考來(lái)源[ ]