zoukankan      html  css  js  c++  java
  • 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);
        };

     引用:http://www.jianshu.com/p/3d6c4416db5e

    https://liangdahong.com/
  • 相关阅读:
    XML
    DAO
    JDBC
    事物、视图、索引、备份和恢复
    用户
    高级查询2
    高级查询1
    数据库设计
    初识MySQL
    古代和现在的区别Hashtable和HashMap
  • 原文地址:https://www.cnblogs.com/dahongliang/p/5178657.html
Copyright © 2011-2022 走看看