ios weakself strongself

本文探讨了在iOS开发中如何避免Block内的循环引用问题,并通过具体示例解释了LRWeakSelf与LRStrongSelf宏定义的作用及正确使用方法。

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

    

    LRWeakSelf(self)

//weak strong self

#define LRWeakSelf(type)  __weak typeof(type) weak##type = type;

#define LRStrongSelf(type)  __strong typeof(type) type = weak##type;





ChattingSetModel *check = [ChattingSetModel value2ModelWithTitle:@"群主审核新成员" open:self.group.masterVerify didClickBlock:nil];

    check.switchBlock = ^(BOOL open) {

        [[DDGroupModule instance] groupMasterVerity:self.group.groupId enable:open result:^(BOOL result, NSError *error) {


        
LRStrongSelf(self)

            if (error) {

                [self showHubTitle:self.view titleText:@"设置失败" location:FULL_HEIGHT/2-80];

            }

        }];

    };此处导致界面无法释放,原因:http://www.code4app.com/blog-864937-1150.html,LRStrongSelf要在block执行之后便执行,如果后面有使用self而不是weakself调用的话很容易出现循环引用,导致界面无法释放,如上.(##宏定义代表拼接字符串.)

LRStrongSelf(shop)Block内部的强引用,而不是外部强引用。所以Block内部声明的强引用不管怎么访问都是不会干扰外部的对象,也不会自动产生一个强引用。所以没有循环引用




http://www.code4app.com/blog-864937-1150.html这个链接相当值钱,~~







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值