委托是什么?


委托是什么?

文章插图

【委托是什么?】委托 一个对象保存另一个对象的引用 , 被引用的对象实现了事先确定的协议 , 该协议用于将引用对象中的变化通知给被引用对象 。委托和委托方双方的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 。所以这两个对象将一直存在内存中而不释放 , 这就是所谓的循环引用的问题 。
以上就是委托是什么 , 希望对大家有所帮助 。

    经验总结扩展阅读