• 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循环引用的问题

  • 相关阅读:
    为Android编译bash
    编译toybox
    RGB信仰灯
    如何用Fiddler抓BlueStacks的HTTPS包
    Adobe Acrobat快捷方式
    [MS-SHLLINK]: Shell Link (.LNK) Binary File Format
    BZOJ 3993 星际战争
    BZOJ 3996 线性代数
    BZOJ 1797 最小割
    BZOJ 2726 任务安排
  • 原文地址:https://www.cnblogs.com/IceBlack-Tea-developer/p/5260042.html
Copyright © 2020-2023  润新知