12.委托是什么?委托的property声明用什么属性?为什么?
委托是delegate(笑),delegate就是將某個方法 要求外部方法來實現.通常是傳參數和數據
delegate是cocoa中實現 MVC的一種重要機制.
舉例說.假如我用自己的代碼重現一個TableView的話. 在TableView的代碼實現里.就用protocol 定義了Delegate和Datasource(都是delegate)應該提供的一些方法和參數傳進來.
property的聲明屬性通常用的是assgin,
為什么說通常.假如delegate 比如說 我們寫的tableViewController 是tableView的 ref holder的話.那么 顯然TableViewController的生存周期是大于等于tableView的 這個時候用assgin,是可以保證任何時候 訪問delegate總是不會叫到野指針.
但有一些情況是這樣的舉例說我創建了一個請求比如網絡連接的.而且把自己作為delegate傳給了這個 request.那么這里就需要解決一個問題.首先有沒有可能在這個請求返回的時候(異步的)這個請求的類已經不存在了或者改變了.這里得看具體情況,具體處理.
通常來說不建議 delegate用 retain 這樣容易造成抱死.既相互retain 造成一個instrument都可能無法發現的leak 而且通常是大塊的leak
轉載于:https://www.cnblogs.com/sqq521/archive/2012/10/17/2728291.html
總結
以上是生活随笔為你收集整理的12.委托是什么?委托的property声明用什么属性?为什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 帮助你更好理解javascript中ea
- 下一篇: [转载]IPhone之NSFileMan