zoukankan      html  css  js  c++  java
  • iOS开发中两个不错的宏定义

    /**

     Synthsize a weak or strong reference.

     Example:

        @weakify(self)

        [self doSomething^{

            @strongify(self)

            if (!self) return;

            ...

        }];

     */

    #ifndef weakify

        #if DEBUG

            #if __has_feature(objc_arc)

            #define weakify(object) autoreleasepool{} __weak __typeof__(object) weak##_##object = object;

            #else

            #define weakify(object) autoreleasepool{} __block __typeof__(object) block##_##object = object;

            #endif

        #else

            #if __has_feature(objc_arc)

            #define weakify(object) try{} @finally{} {} __weak __typeof__(object) weak##_##object = object;

            #else

            #define weakify(object) try{} @finally{} {} __block __typeof__(object) block##_##object = object;

            #endif

        #endif

    #endif

    #ifndef strongify

        #if DEBUG

            #if __has_feature(objc_arc)

            #define strongify(object) autoreleasepool{} __typeof__(object) object = weak##_##object;

            #else

            #define strongify(object) autoreleasepool{} __typeof__(object) object = block##_##object;

            #endif

        #else

            #if __has_feature(objc_arc)

            #define strongify(object) try{} @finally{} __typeof__(object) object = weak##_##object;

            #else

            #define strongify(object) try{} @finally{} __typeof__(object) object = block##_##object;

            #endif

        #endif

    #endif

    ARC和MRC环境下关于防止block内部self循环引用的问题

  • 相关阅读:
    Mysql 三大特性详解
    MySQL Innodb日志机制深入分析
    Bootstrap学习地址
    Java【锁】
    Java【tomcat】配置文件
    nginx配置文件详解【nginx.conf】
    Sqlserver2008[索引]
    网络知识
    RestClient火狐接口测试地址
    java基础1JDK各大版本下载地址
  • 原文地址:https://www.cnblogs.com/IceBlack-Tea-developer/p/5260042.html
Copyright © 2011-2022 走看看