block:解决成员变量的循环引用的问题
来源:互联网 发布:php域名授权函数 编辑:程序博客网 时间:2024/04/30 16:37
项目界面简单,但是在界面的跳转过程中,有点小bug那就是界面的转换过程中delloc方法不走,也就是说这个对象没有被释放,那么问题来了??到底什么鬼??
用analyze根本检查不出来。instruments工具leaks查找定位不到。
多以就舔着脸自己有走了一遍代码。
最后查到这个成员变量的问题,因为写成@property(nonatomic,copy)NSString* currentLocation;
这种形式的属性时,我们都可以用 __weak typeof(self)weakself= self;
这种方法防止block循环引用,但是成员变量的没有self指向所以就没有解除循环引用的问题。
那么 ,正确的姿势就来了:
对的!就是这样,在写成员变量的时候,其实都是默认strong修饰的即:
而这种防止循环引用的方法就是在__weak typeof(self)weakself= self的同时,需要在代码块里面进行强引用:
__strong ,然后在用箭头指向的方式进行指针指向。
最后就会发现,delloc方法实现,即控制器释放!!循环引用解除!!!
引言:在开发中,如何解决block中的循环引用呢?__weak 去修饰self,那么在block中使用weakSelf去调用属性就可以解决了。
但是,在我们没有设置属性的情况下,设置的成员变量,如何在block中避免循环引用呢?
一、问题截图
二、解决方案截图
经实测,这里解决方案截图第一个红框的strongSelf修饰的self 必须为 __weak 修饰过以后的self。代码修改为以下方式才有效果后,使用strongSelf->label1.text = @“” 即可。
0 0
- block:解决成员变量的循环引用的问题
- block:解决成员变量的循环引用的问题
- 如何解决block 循环引用的问题
- iOS开发之 成员变量 解决block循环引用方案
- block 循环引用的问题
- Block的循环引用问题
- Block的循环引用问题
- block的循环引用问题
- Block的循环引用问题
- Block的引用循环问题
- block循环引用的问题
- iOS开发——Block循环引用问题的解决
- iOS 解决block中self的循环引用问题
- __block关键字解决block的循环引用
- iOS Block 中 循环引用的解决
- Block的引用循环问题 (ARC & non-ARC) 【 引用外部变量或对象 】
- block的循环引用的问题
- oc block 中直接引用成员变量 循环引用
- 【python图像处理】极坐标变换及插值算法
- redis安装,redis项目以来,redis和spring整合,redis的service,redis的service实现类
- 关于JavaScript 三种绑定事件方式之间的区别以及对应的解绑(整理)
- Android中Hook Instrumentation 的实现
- 关于局域网共享问题
- block:解决成员变量的循环引用的问题
- const 修饰函数参数,返回值,函数体,保护数据
- 快速排序算法 Java实现
- 《人民的名义》第二部剧情简介
- Office设置不同章节的页眉页脚及下划线的清除与添加
- 400 badrequest问题
- 数据结构复习0.概论
- CodeFroces 805A Fake NP
- 2016微信公开课·张小龙演讲全文(上)