KVO exc_bad_access (код =1)

- (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 не имеет свойства кадра. Это вид, хотя (как и ваш tableView). Я не уверен, какой кадр вы пытаетесь наблюдать, но вы можете попробовать:

  [_tableView addObserver:self.view
               forKeyPath:@"frame"
                  options:NSKeyValueObservingOptionNew
                  context:NULL];

Или же

  [_tableView addObserver:tableView
               forKeyPath:@"frame"
                  options:NSKeyValueObservingOptionNew
                  context:NULL];
Другие вопросы по тегам