第3章 介面與API設計 52條筆記,api52條

來源:互聯網
上載者:User

第3章 介面與API設計 52條筆記,api52條

第3章 介面與API設計 52條筆記

第15條: 用首碼避免命名空間衝突

Objective-C 沒有其他語言那種內建的命名空間機制 。鑒於此,我們在起名時要設法避免潛在的命名衝突,否則很容易就重名了。如果發生命名衝突 naming clash ,那麼應用程式的串連過程就胡出錯。

避免此問題的唯一做法就是變相實現命名空間:為所有名稱都加上適當的首碼。

 

第16條: 提供全能初始化方法

把這種可為對象提供必要資訊以便其能完成工作的初始化方法就做 指定初始化方法 designated initialzier.

如果建立執行個體的方法不止一種,那麼這個類就會有多個初始化方法。不過要在其中選定一個作為designated initializer ,令其他初始化方法都來調用它。

上面幾個初始化方法中,initWithTimeIntervalSinceReferenceDate:是 designated initializer.

 

第23條:通過委託與資料來源協議進行對象間通訊

該模式的主旨是 : 定義一套介面,某對象若想接受另一個對象的委託,則需要遵從此介面,以便成為其委派物件 delegate.而這另一個對象則可以給其委派物件回傳一些資訊,也可以在發生相關事件時通知委派物件。

 

一般通過協議 這項語言特性來是實現此模式,整個Cocoa系統架構都是這麼做的。

第24條: 將類的實現代碼分散到便於管理的數個分類之中

類中經常容易填滿各種方法,而這些方法的代碼則全部堆在一個巨大的實現檔案中。

通過Objective-C的分類機制,把類代碼按邏輯劃入幾個分區中,這對開發與調試都有好處。

 

把個人資訊建模為類。

可以用分類機制把剛才的類改寫成下面這樣:

現在,類的實現代碼按照方法分成了好幾個部分。所以說,這項語言特性當然就叫做分類 啦 。

使用分類機制之後,依然可以把整個類都定義在一個介面檔案中,並將其代碼寫在一個實現檔案中。可是隨著分類數量增加,當前這份實現檔案很快就會膨脹。此時,可以把每個分類提取到各自的檔案中去。

以EOCPerson為例,可以按照其分類分成以下幾個檔案:

通過分類機制,可以把類代碼分成很多易於管理的小塊,以便單獨檢視 。使用分類機制之後,如果想用分類中的方法,那麼要記得在引入EOCPerson.h時一併引入分類的標頭檔。

雖然稍微有點麻煩,不過分類仍然是一種管理代碼的好方法。

第25條:總是為第三方的分類名稱加首碼。

第26條: 勿在分類中聲明屬性

屬性是封裝資料的方式。儘管從技術上說,分類也可以聲明屬性,但這種做法應該盡量避免。

關聯對象能夠解決在分類中不能合成執行個體變數的問題。

這樣做可行,但不太理想。要把相似的代碼寫很多遍,而且在記憶體管理問題上容易出錯,因為我們在為屬性實現存取方法時,經常會忘記遵從其記憶體管理語義。

儘管這個方法不壞,但筆者不推薦。

把屬性定義在主介面中要比定義在分類裡清洗得多。

至於分類機制,則應將其理解為一種手段,目標在於擴充類的功能。

有時候唯讀屬性還是可以在分類中使用的。

由於擷取方法並不訪問資料,而且屬性也不需要由執行個體變數來實現,所以可以像下面這樣來實現分類:

第27條: 使用class-continuation 分類 隱藏實現細節

第28條:通過協議提供匿名對象

協議定義了一系列方法,遵從此協議的對象應該實現他們。於是,我們可以用協議把自己所寫的API只中的實現細節隱藏起來,將返回的對象設計為遵從此協議的純id 類型。

在定義受委託者 delegate這個屬性時,可以這樣寫

@property (nonatomic ,weak )id <EOCDelegate>delegate;

由於該屬性的類型是id<EOCDelegate>,所以實際上任何類的對象都能充當這一屬性,即便該類不繼承自NSObject也可以,只有遵循EOCDelegat協議就行。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.