假设B对A有弱引用,而A对B有强有力的参考
在 A 的dealloc
中- (void)dealloc {
[self.b foo];
self.b = nil;
}
在 B 的foo
中- (void)foo {
NSLog(@"%@", self.a);
//using self.a weak reference to A, which is nil;
}
为什么在dealloc完成后弱引用不是nil?这是什么原因,我能预防吗?是否有一些方法可以在dealloc之前调用?
答案 0 :(得分:0)
两个不一致的地方:
1.A)在您的代码中,您声明:
...对A的弱引用,即nil
1.B)在你的问题中,你说:
...为什么弱引用不是nil
根据上述1.A),预期为零。
2.A)在你提出的问题中你说明了
...... dealloc完成后
2.B)在您的代码中,您在dealloc方法中调用函数foo
在dealloc完成后不执行Foo。从dealloc方法返回后,Dealloc就完成了。此外,如果您使用ARC,则不会调用[super dealloc]
,但如果您没有使用自动引用计数,则会丢失它。