Programming with Objective-C 翻譯計劃(1)--- 介紹

關于 Objective-C

當你編寫 OS X 和 iOS 軟件時,Objective-C 將是你主要使用的語言。它對 C 語言進行了拓展,并提供了面向對象的特性和動態運行時。Objective-C 沿用了 C 語言的語法規則,原始類型,和控制流語句,并加入了定義類和方法的語法規則。它在提供動態綁定和動態派發,推遲重要事項到運行時執行的同時,也在語言層面上加入了對對象圖管理以及對象字面量的支持。

一瞥

這份文檔介紹了 Objective-C 語言并且大量的使用范例。你將會學到如何通過創建自己的類來自定義對象,并且學會如何使用 Cocoa 和 Cocoa Touch 庫提供的類。 盡管這些庫中的類與語言是分離的,但是對他們的使用是與 Objective-C 編程緊密結合在一起的,并且很多 Objective-C 語言級別特性依賴于這些類提供的實現。

一個應用架構在對象的網絡之上

當你想要編寫一個 OS X 或 iOS 應用,你將花大部分的時間與對象打交道。這些對象是 Objective-C 類的實例,其中一部分類是由 Cocoa 和 Cocoa Touch庫提供的,一部分需要你自己編寫。

編寫自己的類時,你需要提供一份類的描述來給類的實例細化默認公開的接口。接口包含封裝相關數據的公開屬性,并包含一系列方法。方法聲明指出了一個對象可以接受的消息,并且指明了方法被調用時需要提供的參數。你還需要提供一份類的實現,用來提供在接口中聲明的每一個方法的可執行代碼。

類別拓展已有的類

當你想給一個已有類添加并不復雜的行為,與其創造一個全新的類,還不如定義一個類別。你可以用類別給任何的類添加方法,包括你并不持有實現源代碼的類,比如框架類NSString

如果你擁有類的源代碼,你可以用類拓展來添加新的屬性,或修改已有屬性的特性。類拓展經常在單一源代碼或自定義庫的私有實現中被用于隱藏私有行為。

協議定義消息協議

Objective-C 應用的大部分工作都是由對象之間相互傳遞消息形成的。通常,這些消息是由類的接口中被明確聲明的方法來定義的。但是有時候,如果能定義并不與某一特定類相關的一組相關的消息會很有用。

Objective-C 通過協議定義一組相關的方法,例如對象請求代理的方法,這些方法要么是可選的要么是必須的。任何類都可以表明它采用了協議,這就意味著它必須提供協議中列出的必須實現的方法的實現。

值和集合通常作為 Objective-C 的對象

在 Objective-C 中用 Cocoa 和 Cocoa Touch類來表示值很常見。NSString 類用于字符串的自負, NSNumber類用于不同的數字類型,比如整數或浮點數,NSValue類用于其他值,比如 C 結構體。你也可以使用 C 語言定義的任何原始類型,比如 int, float, char

集合通常以集合類型的實例的形式存在, 用于收集其他 Objective-C 對象,比如NSArray, NSSet, NSDictionary

Blocks 簡化常規任務

Blocks 是一種被引入 C,Objective-C 和 C++ 的一種語言特性,用來表示工作的一個單元;Block 囊括了一塊代碼以及這塊代碼被捕獲時的狀態,這使得他們與其他編程語言中閉包的概念列斯。閉包通常被用于簡化常規任務,如集合遍歷,分類和測試。Block使用如GCD這樣的技術也使得同步或異步作業的調度更加簡單。

錯誤對象被用于運行時錯誤

盡管 Objective-C 包含異常處理的語法,但 Cocoa 和 Cocoa Touch僅在處理編程錯誤(如數組越界訪問)時使用異常處理,并且異常應在應用下次運行前被修復。

所有其他的錯誤,包括運行時錯誤比如存儲不夠或無網絡連接,可以被 NSError的類實例來表示。為了在出錯時給用戶最好的用戶體驗,你的應用應該對錯誤有所準備并弄清如何處理最好。

Objectice-C 的代碼遵守已有的約定

當編寫 Objectice-C 代碼時,你應該牢記一些已有的編程約定。 比如,方法名以小寫字母開頭,如果有多個單詞應使用駝峰命名法;比如, doSomething or doSomethingElse。并且,重要的不僅僅是大寫,你還應該注意代碼的可讀性要好,這就意味著方法名表達性要好,但不至于太啰嗦。

除此之外,如果你想利用語言和框架的特性,還有一些要遵守的約定。比如,屬性訪問方法必須嚴格的遵守命名約定以利用如 Key-Value Coding (KVC) 和 Key-Value Observing (KVO) 這樣的技術。

先決條件

如果你是第一次接觸 OS X 或 iOS 開發,在閱讀本文檔之前,你應該先閱讀一下 Start Developing iOS Apps TodayStart Developing Mac Apps Today 來對 iOS 和 OS X 應用開發有一個整體的了解。除此之外,在嘗試大部分章節結尾的習題之前,你應該先熟悉 Xcode 的使用。Xcode 是用來搭建 iOS 和 OS X 應用的IDE。你將自己動手編寫代碼,搭建你應用的交互界面,測試你的應用,并且調試解決任何問題。

相關文獻

這個文檔中的內容適用于 Xcode 4.4 及其之后的版本并假定你使用的是 OS X c10.7 及其之后的版本,或 iOS 6 及其之后的版本。獲取更多關于 Xcode 的信息,見 Xcode User Guide。獲取更多關于語言特性可利用性,見 Objective-C Feature Availability Index

Objective-C 應用使用引用計數來管理對象的生命周期。 大部分時候,編譯器的自動引用計數特性會替你負責對象的內存管理。如果你無法利用 ARC, 或者你需要轉換或保留手動管理內存的遺留代碼,你應該閱讀 Advanced Memory Management Programming Guide

除了編譯器,Objective-C 還使用一個運行時系統來保證其動態性和面向對象特性。雖然你并不經常需要考慮 Objective-C 是如何運作的,但還是有可能需要直接與這個運行時系統打交道,了解運行時,見 Objective-C Runtime Programming Guide and Objective-C Runtime Reference

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容