Block使有注意点
2016-02-02 22:30
381 查看
Block使有注意点
在ios推出block后,apple非常推荐开发者使用。但是如果使用不当,可能会出现内存问题。可以添加如下宏:
#ifndef weakify #if __has_feature(objc_arc) #define weakify( x ) \ _Pragma("clang diagnostic push") \ _Pragma("clang diagnostic ignored \"-Wshadow\"") \ autoreleasepool{} __weak __typeof__(x) __weak_##x##__ = x; \ _Pragma("clang diagnostic pop") #else #define weakify( x ) \ _Pragma("clang diagnostic push") \ _Pragma("clang diagnostic ignored \"-Wshadow\"") \ autoreleasepool{} __block __typeof__(x) __block_##x##__ = x; \ _Pragma("clang diagnostic pop") #endif #endif #ifndef strongify #if __has_feature(objc_arc) #define strongify( x ) \ _Pragma("clang diagnostic push") \ _Pragma("clang diagnostic ignored \"-Wshadow\"") \ try{} @finally{} __typeof__(x) x = __weak_##x##__; \ _Pragma("clang diagnostic pop") #else #define strongify( x ) \ _Pragma("clang diagnostic push") \ _Pragma("clang diagnostic ignored \"-Wshadow\"") \ try{} @finally{} __typeof__(x) x = __block_##x##__; \ _Pragma("clang diagnostic pop") #endif #endif
使用时:
@weakify(self); self.block = ^{ @strongify(self); NSLog(@"AViewControllerAViewController %@",self); };
引用:http://www.jianshu.com/p/3d6c4416db5e
相关文章推荐
- 面试笔试杂项积累-leetcode 76-80
- 如何使用Java语言实现一个网页爬虫
- java 父类引用指向子类对象
- Error installing mysql2: ERROR: Failed to build gem native extension
- GLEW-1.13.0在win7(64位)+VS2010下的配置方法
- 23种设计模式(3):抽象工厂模式
- 远程桌面连接命令
- C语言编程获取PE文件DOS头
- 2016第5周二
- 第二章实例:ActionBar结合Fragment显示
- 看完《雪国列车》有感
- CodeForces 543A Writing Code(dp)
- Jobedin外企招聘网:6个要点不能不知道(转载)
- 【BZOJ1009】GT考试 DP
- 文章标题
- ruby self.included用法
- 第二章实例:Android窗口菜单显示
- 4000 小情绪
- 【POJ】1743 Musical Theme
- 个人笔记 html 04 提交表单与跳转页面冲突时