当前位置 : 主页 > 手机开发 > ios >

ios – 这是一个保留周期吗?

来源:互联网 收集:自由互联 发布时间:2021-06-11
当我在自己保留的区块中对自己打电话时,我通常会收到警告: [self.someView doSomething:^{ self.aVar = @"Hello!"; }]; 我要做: __weak SomeObject *weakSelf = self;[self.someView doSomething:^{ weakSelf.aVar = @"Hell
当我在自己保留的区块中对自己打电话时,我通常会收到警告:

[self.someView doSomething:^{
        self.aVar = @"Hello!";
    }];

我要做:

__weak SomeObject *weakSelf = self;
[self.someView doSomething:^{
        weakSelf.aVar = @"Hello!";
    }];

但是如果我在weakSelf上调用一个方法,并且该方法使用self,那么即使我没有得到警告,这会导致保留周期吗?我在说这个:

__weak SomeObject *weakSelf = self;
[self.someView doSomething:^{
        weakSelf.aVar = @"Hello!";
        [weakSelf aMethod];
    }];

和aMethod使用自我

只要你的weakSelf是 declared outside your block,就没有保留周期.

使用块内的对象会隐式增加保留计数.但是你要在weakSelf而不是self上调用一个方法,所以保留计数不受影响.

网友评论