关于Block内部要不要使用weakSelf的几种情况
来源:互联网 发布:linux e45 readonly 编辑:程序博客网 时间:2024/05/21 22:36
我们知道当对block使用不当时会造成循环引用导致内存泄露,这里列出几种使用block到底会不会引起循环引用的例子,通过重写控制器dealloc,当控制器被pop看有没有调用来判断。
- block是控制器的属性,如果block内部没有使用weakSelf将会造成内存泄露
self.testBlock = ^() { NSLog(@"%@",self.mapView); }; self.testBlock();
- 把block内部抽出一个作为self的方法,当使用weakSelf调用这个方法,并且这个方法里有self的属性,block不会造成内存泄露
self.testBlock = ^() { [weakSelf test]; };-(void)test{ NSLog(@"%@",self.mapView);}
- 当block不是self的属性时,block内部使用self也不会造成内存泄露
TestBlock testBlock = ^() { NSLog(@"%@",self.mapView); };[self test:testBlock];
当使用类方法有block作为参数使用时,block内部使用self也不会造成内存泄露
[WDNetwork testBlock:^(id responsObject) { NSLog(@"%@",self.mapView); }];
以上几个是我通过控制器pop时,通过有没有走dealloc方法测出来的。
转自:http://www.jianshu.com/p/c6ca540861d9
阅读全文
0 0
- 关于Block内部要不要使用weakSelf的几种情况
- 关于 weakSelf 的几种写法
- Block中weakSelf的使用
- OC的Block中使用weakSelf/strongSelf
- IOS Block 的使用 weakSelf strongSelf
- iOS面试题(2.)关于在block中使用weakSelf的讨论
- 关于block 中 何时使用 __weak/__block MyViewController * weakSelf 分析
- 关于block 循环引用 weakSelf
- 关于block 循环引用 weakSelf
- ObjC的Block中使用weakSelf/strongSelf @weakify/@strongify
- ObjC的Block中使用weakSelf/strongSelf @weakify/@strongify
- ObjC的Block中使用weakSelf/strongSelf @weakify/@strongify
- ObjC的Block中使用weakSelf/strongSelf @weakify/@strongify
- ObjC的Block中使用weakSelf/strongSelf @weakify/@strongify
- 在Block中使用weakSelf与strongSelf的意义
- 在Block中一起使用weakSelf与strongSelf的含义
- iOS block何时可以不使用weakSelf
- 防止Block的循环引用 weakself strongself
- java中的对象头的解析
- Multi-Scale Context Aggregation by Dilated Convolution训练记录
- 通过鼠标的拖动改变DOM的高度和宽度
- Spring @Cacheable 的key生成
- 4895: 项链分赃(增强版)
- 关于Block内部要不要使用weakSelf的几种情况
- Jquery-常用方法讲解(-)
- keytool 使用:生成证书并导入JDK
- Linux之动态IP与静态IP分布
- 博客处女作
- Android开发技巧——设置系统状态栏颜色
- redis配置详解
- java-排序
- Java反转链表方法