当改变一些UILabel的框架时,我有一个神秘的EXC_BAD_ACCESS。 碰撞是随机的,通常我必须重复几分钟的条件。 启用NSZombies,以及其他内存debugging标志(NSDebugEnabled,MallocStackLogging),没有帮助,崩溃仍然保持不透明:只是一个BAD_ACCESS没有消息在控制台。 目标似乎是正确的和活着的,所以它看起来不像一个解除分配的内存问题。 为了获得更多信息,我分类了UILabel并重写了崩溃函数: @implementation TestUILabel – (id<CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event { return [super actionForLayer:layer forKey:event]; } @end 它在超级的方法崩溃,但在检查一切似乎是正确的(打印retainCount“自我”和“层”分别给出3和2): (gdb)po自我 <TestUILabel:0x6ac2800; baseClass = UILabel; 帧=(173 174; 0 0); 文字= '54平方米'; opaque = NO; autoresize = LM + TM; autoresizesSubviews = NO; userInteractionEnabled = NO; animation= {position = <CABasicAnimation:0xe07ba60>; }; 层= <CALayer:0xbf1b950 >> (gdb)po事件 界限 […]