两个弱变量可以创建保留周期吗?

时间:2013-04-05 19:03:26

标签: ios objective-c xcode

在ARC中,如果A持有对B的强引用,而B持有对A的强引用,则会有一个保留周期。

下面的代码是否也会创建一个保留周期?

    __weak MyClass *weakSelf = self;
    [self doSomething:^{

        weakSelf.someVariable = YES;

        [weakSelf doSomething:^{

            weakSelf.someVariable = YES;
        }];

    }];

2 个答案:

答案 0 :(得分:2)

使用ARC,weakSelf指针被复制,但由于它很弱,指针的副本不会导致保留计数增加。所以不,它不会创建一个保留周期。

答案 1 :(得分:2)

不,不会。实际上,如果你不保留对象,并且出于某种原因在MyClass对象被释放后调用块,最终会导致运行时崩溃