避免循环引用
来源:互联网 发布:香港 mac pro 关税 编辑:程序博客网 时间:2024/04/28 11:46
比较常见的避免循环引用的方法
- (void)viewDidLoad {
[super viewDidLoad];
__weak typeof(self) weakSelf = self;
self.block = ^ {
[weakSelf requestDataList];
}
}
我们再看一段代码
- (void)viewDidLoad {
[super viewDidLoad];
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
NSOperationQueue *mainQuene = [NSOperationQueue mainQueue];
[center addObserverForName:UIKeyboardWillShowNotification
object:nil
queue:mainQuene
usingBlock:^(NSNotification *note) {
[self requestDataList];
}];
}
当返回到上一级页面的时候 dealloc 方法没有走,为什么
首先:usingBlock中请求加载数据,block retain self对象,这里没有形成循环引用,但依然造成内存泄漏
原因:center类使用单例设计,走完这个viewDidLoad方法也不会释放,而它指向的block保留了self ,导致 self 引用计数总是不为0
解决办法:将block中的self弱引用
- ios避免循环引用
- 避免循环引用
- 避免循环引用
- 如何避免block循环引用
- 避免block的循环引用
- swift3.0 避免循环引用
- 避免Block的循环引用
- 使用block时如何避免循环引用
- NSURLSession的应注意避免循环引用
- block里的self,避免循环引用
- IOS 如何避免Block的循环引用
- json数据避免$ref 循环引用
- ios 避免self循环引用的方法
- iOS 代码规范~避免循环引用
- iOS 面试题~避免循环引用~解决方法
- 使用 weak–strong dance 技术来避免循环引用
- 如何避免在Block里用self造成循环引用
- 避免代码块的循环引用的方法
- ACM—括号配对问题
- mvc dao层、service层 到底怎么写?
- 疯了,到底要怎样才能横屏!
- svn代码统计生成详细html报告
- iOS - Swift UISearchController的取消按钮
- 避免循环引用
- ASP.NET页面事件加载顺序以及Global.asax文件的使用
- NodeJs
- 闰秒问题的全面解读与防范
- 图像特征检测方法—SIFT的Python实现
- IOS_创建自己的Framework静态库
- Fragment show hide,replace
- 0 0 ios开发中uiscrollview里嵌套一个uiscrollview
- linux_code映射到android_code的具体过程