更多精彩内容,欢迎关注:

视频号
视频号

抖音
抖音

快手
快手

微博
微博

委托是什么

文档

委托是什么

委托 一个对象保存另一个对象的引用,被引用的对象实现了事先确定的协议,该协议用于将引用对象中的变化通知给被引用对象。委托和委托方双方的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,因为他们互相引用了。
推荐度:
导读委托 一个对象保存另一个对象的引用,被引用的对象实现了事先确定的协议,该协议用于将引用对象中的变化通知给被引用对象。委托和委托方双方的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,因为他们互相引用了。

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

文档

委托是什么

委托 一个对象保存另一个对象的引用,被引用的对象实现了事先确定的协议,该协议用于将引用对象中的变化通知给被引用对象。委托和委托方双方的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,因为他们互相引用了。
推荐度:
为你推荐
资讯专栏
热门视频
相关推荐
世界第一大机场在哪里 地暖怎么20度就上不去了 电脑检测卡代码是60怎么会事 prod是什么日期 人是什么时候开始吃米饭的 电热水袋怎样加盐 水果蓝怎么装 轿车正常胎压是多少 怎么给pdf文档设置标签 通厕所的工具叫什么 大王卡怎样开4g网络 如懿传永琪第几集下线 前半生浪荡后半生煲汤是什么意思 有关于通的成语有哪些 12字积极向上的名言 刘备第一个官是什么 对待同事要怎样 关汉卿的人物评价 含钾多的蔬菜和水果有哪些 手机通讯模块耗电怎么减少 问句用法的作用 碳循环的过程称与特点 猫咪不吃不喝怎么办 碘的摩尔质量 家里的黄豆怎么自制豆芽 滴滴打车显示司机违规是什么原因 万绿湖在哪里 列举一些数字代表的意思三位数的 工商信用卡怎么查额度 公司歇业如何办理 雌二醇测定多少正常 一般换身份证多少时间可以拿到 京东E卡是什么意思 中国古代改革有哪些 尾盘拉升涨停说明什么 如懿传高贵妃什么时候领盒饭 时辰的一刻什么意思 协议离婚房产公证在哪里办理吗 28调和37调有什么区别 跟女朋友说的真心话
Top