1、block是控制器对象的一个属性,则在block内部使用self将会引起循环应用

typedef void(^TestBlock)();
@interface SecondViewController ()
@property (nonatomic, copy)TestBlock testBlock;
@end self.testBlock = ^()
{
NSLog(@"%@",self.mapView);
};
self.testBlock();

2、把block内部抽出一个作为self的方法,当使用weakSelf调用这个方法,并且这个方法里有self的属性,block不会造成内存泄露

self.testBlock = ^()
{
[weakSelf test];
};
-(void)test
{
NSLog(@"%@",self.mapView);
}

3、当block不是self的属性时,block内部使用self也不会造成内存泄露

TestBlock testBlock = ^()
{
NSLog(@"%@",self.mapView);
};
[self test:testBlock];

4、当使用方法有block作为参数使用时,block内部使用self也不会造成内存泄露

- (void)viewDidLoad {
[super viewDidLoad]; [self getData:^(NSString *str){
NSLog(@"%@----%@", self, str);
}]; [[self class] getData:^(NSString *str) {
NSLog(@"类方法--%@---%@", self, str);
}];
} - (void)getData:(SuccessBlock)success{
if (success) {
success(@"success");
}
}
+ (void)getData:(SuccessBlock)success{
if (success) {
success(@"success");
}
}

最新文章

  1. MVC中得到成员元数据的Description特性描述信息公用方法
  2. NFC读写实例
  3. JS设置cookie
  4. jspSmartUpload上传下载全攻略
  5. C++使用VARIANT实现二维数组的操作
  6. javascript 数据类型 变量 类型转换运算符
  7. Python性能优化的20条建议 (转载)
  8. 帮哥们做的一个整理文档的小工具(C++ string的标准函数还是很给力的,代码在最下)
  9. openstack kilo 流量
  10. Tomcat Server Locations
  11. QML中多样化的ListModel(MultiDelegate)
  12. 我从现象中学到的CSS
  13. Python——网络爬虫
  14. VueI18n插件的简单应用于国际化
  15. MySQL 必知必会学习笔记
  16. 移动端自适应布局 rem方案
  17. Jersey 2.x JDK 上的客户端应用
  18. 【转载】Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析
  19. (Python)numpy的argmax用法
  20. cxf之org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'cxf' available

热门文章

  1. docker容器下tomcat 不向catalina.out输出日志解决以及支持中文字符集
  2. Python中 __init__的通俗解释?附修饰器contextmanager的理解
  3. (四)Lua脚本语言入门(数组遍历)
  4. [浅谈CSS核心概念] CSS元素类型和盒模型
  5. 批量下载,多文件压缩打包zip下载
  6. 添加mysqld、apache服务到windows服务
  7. word导入导出自定义属性列表
  8. 相亲神器记录Swift1.2
  9. 基于Python自动发送QQ群消息
  10. Linux线程的信号量同步