KVO exc_bad_access(代码= 1)

时间:2014-10-17 16:23:29

标签: ios deadlock exc-bad-access key-value-observing xctest

- (void)setTableView:(UITableView *)tableView {
  _tableView = tableView;
  [_tableView addObserver:self
               forKeyPath:@"frame"
                  options:0
                  context:nil];
  [self updateFrame];
}

尝试添加观察者时会发生exc_bad_access。

在汇编代码中,错误代码是' NSKeyValueObserverRegistrationLock'。

不知道导致错误的是什么。

我正在运行XCTest,因此可能会因为将测试代码注入应用程序代码而导致错误。

有人帮忙吗?

1 个答案:

答案 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];