Block使有注意点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Block使有注意点相关的知识,希望对你有一定的参考价值。
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); };
以上是关于Block使有注意点的主要内容,如果未能解决你的问题,请参考以下文章