在ARC中,如果A持有对B的强引用,而B持有对A的强引用,则会有一个保留周期。
下面的代码是否也会创建一个保留周期?
__weak MyClass *weakSelf = self;
[self doSomething:^{
weakSelf.someVariable = YES;
[weakSelf doSomething:^{
weakSelf.someVariable = YES;
}];
}];
答案 0 :(得分:2)
使用ARC,weakSelf指针被复制,但由于它很弱,指针的副本不会导致保留计数增加。所以不,它不会创建一个保留周期。
答案 1 :(得分:2)
不,不会。实际上,如果你不保留对象,并且出于某种原因在MyClass
对象被释放后调用块,最终会导致运行时崩溃