九九百科網

位置:首頁 > 經驗 > 

委託是什麼

經驗1.58W

委託是什麼

委託 一個對象保存另一個對象的引用,被引用的對象實現了事先確定的協議,該協議用於將引用對象中的變化通知給被引用對象。 委託和委託方雙方的property聲明屬性都是assign而不是retain為了避免循環引用造成的內存泄露循環引用的問題這樣理解 比如在main函數中創建了兩個類的對象A和B,現在引用計數是1。
現在讓A和B互相引用A有一個屬性是B對象,屬性説明是retain;B有一個屬性是A對象,屬性説明是retain,現在兩個對象的引用計數都增加1,都變成了2。現在執行[A releasw];[B release];此時創建對象的main函數已經釋放了自己對對象的所有權,但是此時A和B的引用計數都還是1,因為他們互相引用了。
這使你發現A和B將無法釋放,因為要想釋放A必須先釋放B,在B的dealloc方法中再釋放A。同理,想要釋放B必須先釋放A,在A的dealloc方法中再釋放B。所以這兩個對象將一直存在內存中而不釋放,這就是所謂的循環引用的問題。

標籤:委託