#文檔名:用 Objective-C 編程
##關(guān)于Objective-C(簡稱OC)
給iOS和OS X寫程序的時候,Objective-C是程序員使用的主要語言。OC是C語言的一個擴(kuò)展集,提供了面向?qū)ο蟮奶匦院鸵粋€動態(tài)運行時。
OC的語法,基本類型,控制流語句也都是從C語言繼承而來,并且還加入了定義類和方法的語法。OC也添加了語言級別的對象圖形管理和對
象標(biāo)示符支持,來提供動態(tài)分型和動態(tài)綁定,把很多事情延遲到運行時。
###內(nèi)容驚鴻一瞥
本文檔介紹了OC語言和一些擴(kuò)展的例子。學(xué)習(xí)怎么創(chuàng)建自定的類來描述對象,如何使用Cocoa和Cocoa Touch提供的框架類。雖說框架時獨立
與語言存在的,但是很多的特性和框架類密不可分。
###一個App是用對象的網(wǎng)絡(luò)構(gòu)建起來的
寫iOS和OS X的App,主要就是和對象打交道。對象是OC類的實例,有Cocoa提供的類,也有自己定義的類。
如果你要開始創(chuàng)建自己的類,就開始從描述那個類下手,自習(xí)想想這個類的實例對象的公共接口是什么樣子的。這個接口包括了封裝了相關(guān)
數(shù)據(jù)的共用屬性,還有一系列方法。方法的聲明顯示的是對象可以接受的消息,在任何時候被調(diào)用的時候方法可以接受的參數(shù)信息。自定類
中還要包括一個實現(xiàn),視線中包括了之前在接口中聲明的所有方法的可執(zhí)行代碼。
###用“分類”來擴(kuò)展現(xiàn)有的類
為了給現(xiàn)有的類增加一點小功能,犯不上創(chuàng)建一個全新的類,可以通過定義一個“分類”來給現(xiàn)有的類增加自定的行為。使用分類可以給任
何類增添方法,即使是框架里面的那些你沒有源代碼的類,比如NSString。
如果你擁有現(xiàn)有類的源代碼,可以使用一個類擴(kuò)展來增加新的屬性,或者說修改現(xiàn)有的屬性。類擴(kuò)展經(jīng)常用來吧一個私有行為隱藏在單個源
文件或者一個自定的框架實現(xiàn)中。
###“協(xié)議”定義消息規(guī)范
OC程序里最常發(fā)生的操作其實是對象之間互相發(fā)消息。一般來說,這些消息是通過方法的形式顯式地定義在類的接口中。但是有時候,一組
相關(guān)的類是不一定是直接綁定在某個特定的類上的。
OC使用協(xié)議來定義一組相關(guān)的方法,比如那些對象會在委托中調(diào)用的方法,可以設(shè)置成必須實現(xiàn)也可以設(shè)置成可選實現(xiàn)。任何類都可以選擇
實現(xiàn)一個協(xié)議,也就是說,這個類必須要實現(xiàn)協(xié)議中定義的必須實現(xiàn)的方法。
###值類和集合類常被包裝成OC對象
一般OC會用Cocoa中的類來表示值類。NSString類用來表示字符串,NSNumber類用來包裝整型或浮點型數(shù)字,NSValue類則用來包裝其他的類
型,比如C語言的結(jié)構(gòu)體。你也可以使用C語言中的基本類型,比如int,float,或者char。
集合類會包裝成Cocoa集合類的實例來使用,比如NSArray數(shù)組,NSSet集合,或者NSDictionary字典,都可以用來作為OC對象的集合。
###“代碼塊”簡化一般任務(wù)
代碼塊是C,OC,C++都已經(jīng)引入的語言特性,用來代表一個工作單元;代碼塊會用一對花括號包裝一塊代碼,看上去很像其他語言里的閉包
。代碼塊經(jīng)常用來簡化一般的任務(wù)操作,比如集合類中的枚舉,排序,測試操作。代碼塊也可以使得使用GCD技術(shù)的并發(fā)或者異步的多任務(wù)
操作變得更簡單。
###用在運行時問題的Error對象
雖然OC包含了異常處理的語法,但是Cocoa只會在出現(xiàn)編譯時錯誤的時候使用異常(比如數(shù)組訪問越界),這些問題在App發(fā)布之前就應(yīng)該修
正。
所有其他的錯誤,運行時錯誤,比如磁盤空間溢出或者網(wǎng)絡(luò)服務(wù)故障,都被包裝成NSError類的實例。你的程序應(yīng)該有所準(zhǔn)備并且做出處理
,來確保良好的用戶體驗。
###OC代碼要遵循現(xiàn)有的代碼規(guī)范
寫OC代碼,應(yīng)該時刻記住幾條代碼規(guī)范。方法名應(yīng)該小寫字母開頭,之后用駝峰命名,蔽日doSomething和doSomethingElse。這不是說大寫
字母有多重要,而是要確保你的代碼具有一定的可讀性,方法的名稱應(yīng)該具有意義,但是也不要太過冗長。
另外,有一些規(guī)則在使用框架或者語言特性的時候是必須遵守的。比如屬性訪問器方法必須遵守嚴(yán)格的命名規(guī)范以配合比如KVC和KVO這些技
術(shù)。
##前導(dǎo)知識
如果你是開發(fā)新手,在學(xué)習(xí)這份文檔之前,先去看看Start Developing iOS Apps Today文檔,對iOS程序開發(fā)有一個通盤的了解。另外你還
要比較熟悉Xcode的基本用法,Xcode是開發(fā)程序的IDE工具;用Xcode來寫代碼,設(shè)計界面,測試應(yīng)用,調(diào)試程序等等。
在語言上,有一些C語言基礎(chǔ)或者基于C語言的系列語言的知識是不錯的,本文檔中確實包含了一些C語言的流程控制語句的示例代碼。如果
你有其他的高級語言的經(jīng)驗,比如ruby或者Python,那也是可以的,接著往下吧。
另一個基本的前導(dǎo)知識是面向?qū)ο蟮囊恍┗靖拍睿约耙恍┮话愕拿嫦驅(qū)ο蟮幕驹瓌t。要是完全沒概念,推薦先去看相關(guān)章節(jié) OC編程
概念。
OC使用ARC來管理對象的生命周期,ARC會管好這些事情,但是要是你沒辦法使用ARC,就需要自己關(guān)心好這些內(nèi)存管理的事情,你應(yīng)該看看
Advanced Memory Management PRogramming Guide文檔。
新聞熱點
疑難解答