【发布时间】:2011-09-17 01:47:53
【问题描述】:
在更改某些 UILabel 的框架时,我有一个神秘的 EXC_BAD_ACCESS。崩溃是随机的,通常我必须重复几分钟的条件。
启用 NSZombies 以及其他内存调试标志(NSDebugEnabled、MallocStackLogging)并没有帮助,崩溃仍然是不透明的:只是一个 BAD_ACCESS,控制台中没有任何消息。目标似乎是正确且活跃的,因此它看起来不像是内存释放问题。
为了获得更多信息,我将 UILabel 子类化并重写了崩溃函数:
@implementation TestUILabel
- (id<CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event {
return [super actionForLayer:layer forKey:event];
}
@end
它在 super 的方法中崩溃,但经过检查,一切似乎都是正确的(为 'self' 和 'layer' 打印 retainCount 分别给出 3 和 2):
(gdb) po 自我
; };层 = >
(gdb) po 事件
界限
(gdb) po 层
<0xbf1b950 cgpoint cgrect uil lm cabasicanimation>0xbf1b950>
&
&
标签: iphone ios uiview calayer exc-bad-access