首页 > 其他 > 详细

Block使有注意点

时间:2016-02-02 23:14:26      阅读:272      评论:0      收藏:0      [点我收藏+]

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使有注意点

原文:http://www.cnblogs.com/dahongliang/p/5178657.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!