ios 循环引用的场景
2016-03-31 14:26
267 查看
声明delegate为strong类型,简而言之,如果父VC持有子VC,并设置子VC的delegate为self(也就是父VC),这样的结果就是子VC也间接持有了父VC,造成循环引用,在Pop子VC的时候不会调用delloc。
timer是否持有self,
1.NSTimer对象会保留目标,直到其失效为止,调用invalidate可以让其失效,或者一次性计时器触发任务完成之后。
2.反复执行的任务可能导致保留环的发生。如果目标对象保留了计时器,那么就形成了保留环,如果不再相应的时机人为打破保留环,那么内存就泄露了。
相见http://blog.csdn.net/li198847/article/details/50856044
最常见的就是block导致的直接的或是间接的循环引用,__weak typeof(self) weakSelf = self的简化形式,可以拿来直接使用。
CoreFoundation对象(C对象) : 只要函数中包含了create\new\copy\retain等关键字, 那么这些方法产生的对象, 就必须在不再使用的时候调用1次CFRelease或者其他release函数。还有就是通过__bridge_retain桥接转换过来的,也要手动的CFRelease。
timer是否持有self,
1.NSTimer对象会保留目标,直到其失效为止,调用invalidate可以让其失效,或者一次性计时器触发任务完成之后。
2.反复执行的任务可能导致保留环的发生。如果目标对象保留了计时器,那么就形成了保留环,如果不再相应的时机人为打破保留环,那么内存就泄露了。
相见http://blog.csdn.net/li198847/article/details/50856044
最常见的就是block导致的直接的或是间接的循环引用,__weak typeof(self) weakSelf = self的简化形式,可以拿来直接使用。
CoreFoundation对象(C对象) : 只要函数中包含了create\new\copy\retain等关键字, 那么这些方法产生的对象, 就必须在不再使用的时候调用1次CFRelease或者其他release函数。还有就是通过__bridge_retain桥接转换过来的,也要手动的CFRelease。
相关文章推荐
- ios事件之触摸事件
- IOS自动捕获程序崩溃日志再发送邮件提示开发者
- IOS Block-Block块的使用与理解
- iOS 用钥匙串存储设备唯一标识符
- forin遍历,解决Collection <__NSArrayM: 0x7ffa5261aa70> was mutated while being enumerated崩溃的问题
- iOS 设计模式之工厂模式
- iOS自动生成图片@1x,@2x ,@3x图片
- iOS开发~CocoaPods使用详细说明
- iOS
- ios 指定返回的跳转页面
- iOS纯代码开发和xib开发
- iOS conformsToProtocol
- iOS 去掉tableViewCell 点击效果 三个简单方法
- iOS 内存问题
- 起底多线程同步锁(iOS)
- iOS同步对象性能对比(iOS锁性能对比)
- iOS中instancetype和id之间的区别
- iOS多线程开发(四)---线程同步
- bios设置图解教程
- iOS系统GCD学习(5):信号量机制