Effective Objective-C 2.0 學習筆記(一)

來源:互聯網
上載者:User

以下內容主要是學習《Effective Objective-C 2.0》所做的筆記,我所購買的原書為英文原版,由於自己英文水平有限,理解可能有疏漏

原書購買地址:亞馬遜


1、Accustoming Yourself to Objective-C


Item 1: Familiarize Yourself with Objective-C's Roots

一些知識點:

(1)在棧記憶體中存放了一個指向一塊堆記憶體的指標(注意指標在棧中,所指的資料在堆中)

(2)Objective-C 使用訊息結構並且動態綁定方式,在運行時確定物件類型而不是在編譯時間確定。

要記住的:

(1)Objective-C 是 C 的超集,增加了物件導向的屬性。Objective-C 使用了動態綁定的訊息結構,意思是對象的類型在運行時確定。運行時是相對與編譯時間而言的,通過訊息傳遞確認何種代碼被執行。

(2)理解 C 語言的核心概念有助於編寫 Objective-C 程式。尤其是需要理解 C 語言的記憶體管理和指標。


Item 2: Minimize Importing Headers in Headers

一些知識點:

(1)在.h中使用前置聲明(@class) 在.m中使用#import可以減少不必要的編譯的時間

(2)delegate方法可以單獨放在一個.h檔案中避免#import過多不必要的部分

(3)如果前置申明(@class) 不夠用的話可以考慮使用category

要記住的:

(1)盡量在.h檔案中使用前置聲明,在.m檔案中引入標頭檔,避免循環參考。

(2)有些時候前置聲明沒有用的情況下考慮使用category或者單獨引入只包含protocol的標頭檔。


Item 3: Prefer Literal Syntax over the Equivalent Methods

一些知識點:

(1)增強可讀性和使代碼更加簡潔的同時可以避免插入nil錯誤

要記住的:

(1)盡量使用字面值文法來建立字串、數字、數組和字典等。這比使用常規對象建立方法更加清楚和簡介。

(2)在字典和數組中使用關鍵字和索引做下標擷取資料。

(3)使用字面值文法時插入nil會拋出異常。所以要時刻保證插入的資料不能是nil。


Item 4: Prefer Typed Constants to Preprocessor #define

一些知識點:

(1)使用static const NSTimeInterval kAnimationDuration = 0.3 代替 #define ANIMATION_DURATION 0.3

(2)通常static const 如果沒有全域使用的需求可以不包含類名做首碼,使用k做首碼即可,如果有全域使用的需求則需要包含類名做首碼,不用添加k首碼

(3)對於需要全域使用的需求,可以在.h檔案中定義extern NSString *const EOCStringConstant; 在.m中定義NSString *const EOCStringConstant = @"VALUE";這種情況在NotificationName定義時較常用。

要記住的:

(1)盡量避免使用預先處理命令。預先處理命令不包含任何的類型資訊,僅僅是在編譯前做替換操作。它們在重複定義時不會報出警告,容易在整個程式中產生不一致的值。

(2)在實現檔案中定義的static const類型常量因為無需全域引用,所以它們的名字不需要包含命名空間。

(3)在標頭檔中定義的全域引用的常量,需要關聯定義在實現檔案中的部分。因為需要被全域引用,所以他們的名字需要包含命名空間,通常是用它們的類名所謂命名首碼。


Item 5: Use Enumerations for States, Options, and Status Codes

一些知識點:

(1)盡量使用enum定義狀態

(2)使用類型明確的NS_ENUM 和 NS_OPTIONS避免編輯器自己選擇類型

(3)對enum的Switch函數不要使用default,這樣在變更enum時編譯器會自動提出警告避免出錯

要記住的:

(1)使用枚舉定義來為狀態機器、可選項、錯誤碼狀態等提供一個更加易讀的命名值。

(2)如果為方法可選項定義枚舉應該盡量使用NS_OPTIONS方法,這樣可使用OR方法選擇多項。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.