#文檔名:用 Objective-C 編程程序員
##關於Objective-C(簡稱OC)編程
給iOS和OS X寫程序的時候,Objective-C是程序員使用的主要語言。OC是C語言的一個擴展集,提供了面向對象的特性和一個動態運行時。
OC的語法,基本類型,控制流語句也都是從C語言繼承而來,而且還加入了定義類和方法的語法。OC也添加了語言級別的對象圖形管理和對
象標示符支持,來提供動態分型和動態綁定,把不少事情延遲到運行時。數組
###內容驚鴻一瞥ruby
本文檔介紹了OC語言和一些擴展的例子。學習怎麼建立自定的類來描述對象,如何使用Cocoa和Cocoa Touch提供的框架類。雖然說框架時獨立
與語言存在的,可是不少的特性和框架類密不可分。網絡
###一個App是用對象的網絡構建起來的閉包
寫iOS和OS X的App,主要就是和對象打交道。對象是OC類的實例,有Cocoa提供的類,也有本身定義的類。併發
若是你要開始建立本身的類,就開始從描述那個類下手,自習想一想這個類的實例對象的公共接口是什麼樣子的。這個接口包括了封裝了相關
數據的共用屬性,還有一系列方法。方法的聲明顯示的是對象能夠接受的消息,在任什麼時候候被調用的時候方法能夠接受的參數信息。自定類
中還要包括一個實現,視線中包括了以前在接口中聲明的全部方法的可執行代碼。框架
###用「分類」來擴展示有的類
爲了給現有的類增長一點小功能,犯不上建立一個全新的類,能夠經過定義一個「分類」來給現有的類增長自定的行爲。使用分類能夠給任
何類增添方法,即便是框架裏面的那些你沒有源代碼的類,好比NSString。異步
若是你擁有現有類的源代碼,可使用一個類擴展來增長新的屬性,或者說修改現有的屬性。類擴展常常用來吧一個私有行爲隱藏在單個源
文件或者一個自定的框架實現中。ide
###「協議」定義消息規範
OC程序裏最常發生的操做實際上是對象之間互相發消息。通常來講,這些消息是經過方法的形式顯式地定義在類的接口中。可是有時候,一組
相關的類是不必定是直接綁定在某個特定的類上的。
OC使用協議來定義一組相關的方法,好比那些對象會在委託中調用的方法,能夠設置成必須實現也能夠設置成可選實現。任何類均可以選擇
實現一個協議,也就是說,這個類必需要實現協議中定義的必須實現的方法。
###值類和集合類常被包裝成OC對象
通常OC會用Cocoa中的類來表示值類。NSString類用來表示字符串,NSNumber類用來包裝整型或浮點型數字,NSValue類則用來包裝其餘的類
型,好比C語言的結構體。你也可使用C語言中的基本類型,好比int,float,或者char。
集合類會包裝成Cocoa集合類的實例來使用,好比NSArray數組,NSSet集合,或者NSDictionary字典,均可以用來做爲OC對象的集合。
###「代碼塊」簡化通常任務
代碼塊是C,OC,C++都已經引入的語言特性,用來表明一個工做單元;代碼塊會用一對花括號包裝一塊代碼,看上去很像其餘語言裏的閉包
。代碼塊常常用來簡化通常的任務操做,好比集合類中的枚舉,排序,測試操做。代碼塊也可使得使用GCD技術的併發或者異步的多任務
操做變得更簡單。
###用在運行時問題的Error對象
雖然OC包含了異常處理的語法,可是Cocoa只會在出現編譯時錯誤的時候使用異常(好比數組訪問越界),這些問題在App發佈以前就應該修
正。
全部其餘的錯誤,運行時錯誤,好比磁盤空間溢出或者網絡服務故障,都被包裝成NSError類的實例。你的程序應該有所準備而且作出處理
,來確保良好的用戶體驗。
###OC代碼要遵循現有的代碼規範
寫OC代碼,應該時刻記住幾條代碼規範。方法名應該小寫字母開頭,以後用駝峯命名,蔽日doSomething和doSomethingElse。這不是說大寫
字母有多重要,而是要確保你的代碼具備必定的可讀性,方法的名稱應該具備意義,可是也不要太過冗長。
另外,有一些規則在使用框架或者語言特性的時候是必須遵照的。好比屬性訪問器方法必須遵照嚴格的命名規範以配合好比KVC和KVO這些技
術。
##前導知識
若是你是開發新手,在學習這份文檔以前,先去看看Start Developing iOS Apps Today文檔,對iOS程序開發有一個通盤的瞭解。另外你還
要比較熟悉Xcode的基本用法,Xcode是開發程序的IDE工具;用Xcode來寫代碼,設計界面,測試應用,調試程序等等。
在語言上,有一些C語言基礎或者基於C語言的系列語言的知識是不錯的,本文檔中確實包含了一些C語言的流程控制語句的示例代碼。若是
你有其餘的高級語言的經驗,好比ruby或者Python,那也是能夠的,接着往下吧。
另外一個基本的前導知識是面向對象的一些基本概念,以及一些通常的面向對象的基本原則。要是徹底沒概念,推薦先去看相關章節 OC編程
概念。
OC使用ARC來管理對象的生命週期,ARC會管好這些事情,可是要是你沒辦法使用ARC,就須要本身關心好這些內存管理的事情,你應該看看 Advanced Memory Management Programming Guide文檔。