首页 > 学院 > 开发设计 > 正文

__weak修饰后再block中使用__strong修饰问题

2019-11-09 18:34:13
字体:
来源:转载
供稿:网友

__weak修饰后再block中使用__strong修饰问题

ARC环境中使用weak 的修饰符来修饰一个变量,防止其在block中被循环引用,而有些特殊情况下,我们在block中又使用__strong 来修饰这个在block外刚刚用__weak修饰的变量,这是因为在block中调用self会引起循环引用,而在block中需要对weakSelf进行__strong,保证代码在执行到block中,self不会被释放,当block执行完后,会自动释放该strongSelf;

如在AFNetworkReachabilityManager中使用的代码如下:

__weak __typeof(self)weakSelf = self;

    AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status) {

        __strong __typeof(weakSelf)strongSelf = weakSelf;

        strongSelf.networkReachabilityStatus = status;

        if (strongSelf.networkReachabilityStatusBlock) {

            strongSelf.networkReachabilityStatusBlock(status);

        }

    };


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表