IOS weakself strongself

本文介绍了一种在Objective-C中使用宏来实现弱引用和强引用的方法,适用于ARC环境下。通过这种方式可以有效地避免内存管理中可能出现的强引用循环等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#define WEAKSELF    @weakify(self)

#define STRONGSELF  @strongify(self)


#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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值