我的应用程序崩溃就在这一行:
- (void)setXOffset:(CGFloat)xOffset {
_xOffset = xOffset;
_backingTextField.frame = (CGRect) {
.origin.x = - round(xOffset * 2.f) / 2.f,
.origin.y = NSMinY(_backingTextField.frame), // <-- This is it
.size = _backingTextField.frame.size,
};
[self _reloadMask];
}
我得到EXC_BAD_ACCESS
意味着实例_backingTextField
已被释放。我尝试启用僵尸对象但是当我做我的应用程序时不再崩溃。我没有记录,没有。我也无法使用乐器进行复制。
另一件事是该对象似乎仍然在内存中
但这可能只是因为指针指向内存中的那个位置而内存还没有被覆盖。
知道可能导致问题的原因是什么?
_backingTextField
是一个强有力的参考,这也很奇怪。在对象本身被释放之前,这不应该被释放。
什么是没有价值的是animator
代理自动调用此方法。
self.animator.xOffset = xOffset;
我只是尝试将_backingTextField
作为弱引用,甚至没有帮助。
答案 0 :(得分:0)
我发现了这个问题。
我不小心覆盖了dealloc
类别中的NSView
方法。这导致NSView
的子视图无法正确释放,并引入了其他奇怪的副作用。
无法调试......