KVO exc_bad_access(code = 1)
问题描述:
- (void)setTableView:(UITableView *)tableView {
_tableView = tableView;
[_tableView addObserver:self
forKeyPath:@"frame"
options:0
context:nil];
[self updateFrame];
}
exc_bad_access在尝试添加观察者时发生。KVO exc_bad_access(code = 1)
在汇编代码中,错误代码是'NSKeyValueObserverRegistrationLock'。
不知道是什么原因导致了错误。
我正在运行XCTest,因此可能有错误是由将测试代码注入应用程序代码引起的。
有人帮忙吗?
答
一些事情。
您应该定义您的选项参数。 NSKeyValueObservingOptions结构不具有0的条目。如果您在新值之后,则使用NSKeyValueObservingOptionNew。
接下来我假设列出的函数驻留在UIViewController中? UIViewController没有框架属性。它的视图虽然(你的tableView也是这样)。我不知道你要观察哪些框架,但你可以尝试:
[_tableView addObserver:self.view
forKeyPath:@"frame"
options:NSKeyValueObservingOptionNew
context:NULL];
或者
[_tableView addObserver:tableView
forKeyPath:@"frame"
options:NSKeyValueObservingOptionNew
context:NULL];