- (void)setTableView:(UITableView *)tableView {
_tableView = tableView;
[_tableView addObserver:self
forKeyPath:@"frame"
options:0
context:nil];
[self updateFrame];
}
尝试添加观察者时会发生exc_bad_access。
在汇编代码中,错误代码是' NSKeyValueObserverRegistrationLock'。
不知道导致错误的是什么。
我正在运行XCTest,因此可能会因为将测试代码注入应用程序代码而导致错误。
有人帮忙吗?
答案 0 :(得分:0)
有几件事。
您应该定义您的选项参数。 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];