OC閱讀筆記七 委託資料來源與協議

2021-07-10 21:03:40 字數 378 閱讀 5926

存放委託物件的屬性(delegate)要用weak定義,因為可能委託的物件也持有本物件.二者之間必須為"非擁有關係".避免保留環造成記憶體洩露.

根據需求可以選擇用weak或unsafe_unretained來定義delegate.

委託方法即可以傳遞引數給委託物件,也能獲取委託物件的返回值.

委託協議一般用可選的(optional)標註,在呼叫委託方法前,必須先確定委託物件是否能響應該選擇器.查詢方法為"respondstoselector:".

如果需要頻繁的呼叫委託方法,可以新增結構體,放入對應委託方法大小為1的位段,在delegate的set方法裡用"respondstoselector:"方法判斷結果並儲存在結構體.這樣每次呼叫委託方法時,直接查詢結構體的標誌就可以了.

閱讀筆記七

我們來講乙個故事,一位旅行者路過乙個烈日下的工地,所有人都在那兒汗流浹背地搬磚。旅行者問第乙個人在幹什麼,那人頭也沒抬地回答 我在搬磚。旅行者問第二個人在幹什麼,這個匆匆抬起頭認真地說 我在砌牆。旅行者問第三個人在幹什麼的時候,那個人臉上充滿了光彩,很自信地說 我在蓋聖瑪利亞大教堂。這個故事是不是像...

OC閱讀筆記十 匿名物件

協議可以在某種程度上提供匿名型別,當介面背後有多個不同的實現類,又不想宣告指定哪個類時,可以使用這種方法.因為有時候這些類會變,有時候又無法容納於標準的類繼承體系中,不能以某個公共基類來統一標示.在一些情況下,物件的型別並不重要,重要的是物件有沒有實現某些方法,可以用 匿名型別 來表達該概念.在開發...

OC閱讀筆記十三 ARC 下

在方法中返回自動釋放物件的時候,會呼叫objc autoreleasereturnvalue函式檢測返回的物件是否執行retain操作,如果執行就設定全域性資料結構的乙個標誌位.而不執行autorelease操作.與之相似,如果呼叫方法的 要保留此物件,則呼叫objc retainautorelea...