在ARC项目中,我将__weak ivar(声明为id __weak weakLayer;
)设置为CALayer,该CALayer由其超级层保留。大多数时候这都有效。有时,弱ivar测试为零。我写了一些测试代码来简化调试,以演示问题。我希望这是一个无限循环,但它通常在不到20次迭代中爆发。爆发所需的迭代次数不一致。
array = [NSMutableArray array];
while (1) {
CALayer *layer = [CALayer layer];
[array addObject:layer];
weakLayer = layer;
if (!weakLayer) {
NSLog (@"nil");
break;
}
NSLog(@"not nil");
}
如果我在po weakLayer
内放置一个if
的动作断点,它会打印一个有效的对象。我已经使用Lion和Mountain Lion SDK在Xcode 4.3.3和4.4上进行了测试。
答案 0 :(得分:0)
3人(包括我自己)现在确认这个在10.8上有效,但在10.7.4上没有。