文档章节

delegate用什么属性修饰,ARC下与MRC下有什么不同?

JlongTian
 JlongTian
发布于 2017/02/04 10:45
字数 188
阅读 123
收藏 0

delegate为了防止循环引用一般用weak和assign修饰,但这两者是有区别的,比如说A对象的delegate就是一个viewController,并且viewController对A对象也强引用了

  • 如果用weak修饰,那么当viewController释放后,A对象的delegate会自动置为nil
  • 如果用assign修饰,当viewController释放后,A对象的delegate会变成野指针,要防止这种情况,就要重写viewController的dealloc方法,手动将A对象的delegate置为nil.
  • - (void)dealloc{
       self.A.delegate = nil;
    };

     

ARC与MRC下有什么不同?就是MRC下只能用assign修饰,而在ARC下既能用weak也能用assign,只是用assign要做多一定工作

 

 

© 著作权归作者所有

下一篇: const
JlongTian
粉丝 3
博文 308
码字总数 148393
作品 0
深圳
程序员
私信 提问
@autorelesepool

MRC, 在这种情况下@autorelesepool块等同于调用NSAutoreleasePool类的api Autorelease对象是在当前的runloop迭代结束时释放的,而它能够释放的原因是系统在每个runloop迭代中都加入了自动释...

SunGiantor
2015/05/21
0
0
Block很简单,就像delegate的简化版

代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙完成一件事情,为什么要委托别人来做呢,这其实是MVC设计模式中的模块分工问题,例如View对象它只负责显...

召唤攻城狮
2014/03/19
0
5
牛客网 iOS 题 21-41

牛客网 iOS 题 21-41 21.Objective-C 有私有方法吗?有私有变量吗? 答案:没有私有方法,有私有变量 在 interface 里定义变量默认是保护的,在 plementation 里定义变量默认是私有的 Object...

木佥
2018/05/12
0
0
如何优雅的处理循环引用(retain cycle)

什么是循环引用? 顾名思义, 就是几个对象某种方式互相引用, 形成了"环"。由于 Objective-C 内存管理使用引用计数的架构, 而并不是 GC(garbage collector), 而在 ARC(自动引用计数) 下所有 OC...

__block
2018/06/13
0
0
iOS程序的完整启动过程及原理

PY为我的前缀名 1.先执行main函数,main内部会调用UIApplicationMain函数 2.UIApplicationMain函数里面做了什么事情: 1> 创建UIApplication对象 2> 创建UIApplication的delegate对象—–PYA...

sundy_ly
2014/01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

我的程序人生——三年开发的思考,阿里朋友给我总结的“Java架构师技术栈”

想写这篇文章已经很久了,本来计划在3月份,也就是刚好满3年的时候写的,但是因为各种各样的原因推到了现在才开始码字。 小感慨 三年是一段很长的时间,它足够让你从高中毕业进入大学,也能让...

我最喜欢三大框架
14分钟前
0
0
ElasticSearch获取索引信息

检查集群的健康情况 GET /_cat/health?v green:每个索引的primary shard和replica shard都是active状态的 yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是act...

水木星辰
16分钟前
0
0
Cesium中级教程6 - 3D Models 三维模型

Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 3D Models 三维模型 本教程将教您如何通过Primitive API转换、加载和使用Cesium中的三维模型。如果你是C...

Cesium中文网
18分钟前
0
0
Elasticsearch简单学习1-用白话文解释原理

由于Elasticsearch在工作中用的越来越多,平时是边学边用,很少记录,读到一些很好的文章时间久了就忘记了。 所以,在此记录一下,希望对更多人的学习有帮助,知识在于分享! ==============...

wind2012
25分钟前
0
0
Spring面试题部分总结【慨念】

什么是Spring? spring是一个企业级应用的开源开发框架,主要用来开发java应用,spring框架目标就是简化企业级应用开发。 Spring用到了那些设计模式? spring里面用到了大量的设计模式,这里...

薛小二
27分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部