KVO exc_bad_access(代码=1)
Posted
技术标签:
【中文标题】KVO exc_bad_access(代码=1)【英文标题】:KVO exc_bad_access (code=1) 【发布时间】:2014-10-17 16:23:28 【问题描述】:- (void)setTableView:(UITableView *)tableView
_tableView = tableView;
[_tableView addObserver:self
forKeyPath:@"frame"
options:0
context:nil];
[self updateFrame];
exc_bad_access 在尝试添加观察者时发生。
在汇编代码中,错误代码是'NSKeyValueObserverRegistrationLock'。
不知道是什么导致了错误。
我正在运行 XCTest,因此错误可能是由于将测试代码注入应用程序代码而导致的。
有人帮忙吗?
【问题讨论】:
【参考方案1】:有几件事。
您应该定义您的选项参数。 NSKeyValueObservingOptions 结构没有 0 的条目。如果您在新值之后,请使用 NSKeyValueObservingOptionNew。
接下来我假设您列出的功能驻留在 UIViewController 中? UIViewController 没有 frame 属性。它的视图确实如此(你的 tableView 也是如此)。我不确定您要观察哪个帧,但您可以尝试:
[_tableView addObserver:self.view
forKeyPath:@"frame"
options:NSKeyValueObservingOptionNew
context:NULL];
或者
[_tableView addObserver:tableView
forKeyPath:@"frame"
options:NSKeyValueObservingOptionNew
context:NULL];
【讨论】:
"NSKeyValueObservingOptions 结构没有 0 的条目。" - 没错,但 Apple 的 NSKeyValueObservingOptions 文档说:“如果您不需要更改字典值,您可以传递 0”。 herzbube 不错。以上是关于KVO exc_bad_access(代码=1)的主要内容,如果未能解决你的问题,请参考以下文章
当我在 iPad 上运行时,我的游戏一直在说“EXC_BAD_ACCESS(code=1, address=0xb176e978)”
线程 1:EXC_BAD_ACCESS(代码=1,地址=0x0)错误
代码错误:线程 1:EXC_BAD_ACCESS(代码=1,地址=0x0)
调用按钮操作时的 EXC_BAD_ACCESS(代码 = 2 或代码 1)