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使有注意点的主要内容,如果未能解决你的问题,请参考以下文章

block的注意点

关于block使用的5点注意事项

关于block块使用的6点注意事项

关于inline-block布局需要注意几点事项

Objective-C Block与函数指针比较

android布局中使用include及需注意点