委托 一個對象保存另一個對象的引用,被引用的對象實現了事先确定的協議,該協議用于将引用對象中的變化通知給被引用對象。 委托和委托方雙方的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。所以這兩個對象将一直存在内存中而不釋放,這就是所謂的循環引用的問題。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!