iOS -- Effective Objective-C 閱讀筆記 (8)

來源:互聯網
上載者:User

標籤:邏輯   tor   沒有   擷取   ble   mic   其他   關係   bsp   

若想令自己縮寫的對象具有拷貝功能, 則需要實現 NSCopying 協議,

如果自訂的對象分為可變版本與不可變版本, 那麼就要同時實現 NSCopying 協議和 NSMutableCopying 協議

複製對象是需要決定採用淺拷貝還是深拷貝, 一般情況下採用淺拷貝,

如果你所寫的對象需要深拷貝, 那麼就考慮新增一個專門執行深拷貝的方法.\

 

// 協議與分類

OC 語言有意向特性叫做 ‘協議‘, 它與 Java 的 ‘介面‘類似, OC 不支援多重繼承,因而我們吧某個類應該實現的一系列方法定義在協議中.協議最常見的是實現委託模式, 不過也有其他用法, 理解並善用協議可令代碼邊的易於維護, 因為協議這種方式能很好的描述介面.

‘分類‘也是 OC 的一項重要語言特性, 利用分類機制,我們無需繼承子類即可直接為當前類添加方法. 

// 通過委託與資料來源協議進行帝鄉鍵通訊.

對象之間經常需要互相通訊,而通訊的模式,OC 開發人員廣泛使用一種名為 ‘委託模式‘的變成來實現對象間的通訊,該模式的主旨是: 定義一套介面, 某個對象若想接受另一套對象的委託, 則需要遵從此介面,以便成為其‘委派物件‘,而這‘另一個對象‘則可以給其委派物件回傳一些資訊, 也可以在發生事件是通知委派物件.

// 此模式可將資料與商務邏輯解耦, 比方說, 使用者介面裡有一個顯示一系列資料所用的視圖, 那麼,此試圖只應包含顯示資料所需邏輯代碼, 而不應該決定要顯示何種資料以及資料之間如何互動的問題, 視圖對象的屬性中, 可以包含負責資料與事件處理的對象, 這兩種對象分別稱為‘資料來源‘ 與 ‘委託‘.    // 委託協議名通常是在相關類名後面加上 Delagate 一詞,整個類名採用駝峰命名法.以便使用此代碼的人理解,    // 有了這個協議之後, 類就可以用一個屬性來存放委對象.    // @property (nonatomic, weak) iddelagete 一定要注意,這個屬性需要定義成 weak, 而非 strong, 因為兩者之間必須是 ‘非擁有關係‘

// 委託協議中的方法一般都是可選的, 因為 扮演 ‘受委託者‘ 角色的這個對象未必關心其中所有的方法, 為了指明可選方法,委託協議經常使用 @optional 關鍵字來標註大部分或全部的方法.

// 如果要在委派物件上調用可選方法, 那麼必須提前使用類型資訊查詢方法 判斷這個委派物件能否響應相關選擇子.

//    if ([_delegate respondsToSelector:@selector(action:)]) {

//        [_delegate action:sender];

//    }

// 這段代碼用 ‘respondsToSelector‘ 來判斷委派物件是否實現了相關方法, 如果實現了, 就調用, 如果沒有實現, 就不執行任何操作, 這樣的話, delegate 對象就可以完全按照其需要來實現委託協議的方法, 不用擔心因為哪個方法沒有實現而導致程式出問題, 即使沒有設定委派物件,程式也能正常運行. 因為給 nil 發訊息將使得 if 語句的值成為 false.

// 總結:

// 委託模式為對象提供了 一套介面, 使其可由此將相關事件告知其他對象.

// 將委派物件應該支援的介面定義成協議, 在協議中把可能需要處理的時間定義成方法.

// 當某個對象需要從另外一個對象中擷取資料時,可以使用委託模式. 這種情境下, 該模式 也可以叫做 ‘資料來源協議‘.

// 若有必要. 可實現含有位段的結構體, 將委派物件是否能響應相關協議方法這一資訊緩衝至其中;

iOS -- Effective Objective-C 閱讀筆記 (8)

相關文章

聯繫我們

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