0

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

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

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

        weakSelf.someVariable = YES;

        [weakSelf doSomething:^{

            weakSelf.someVariable = YES;
        }];

    }];
4

2 回答 2

2

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

于 2013-04-05T19:06:47.607 回答
2

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

于 2013-04-05T19:07:39.127 回答