Неожиданный EXC_BAD с NSNumber - PullRequest
       2

Неожиданный EXC_BAD с NSNumber

0 голосов
/ 31 января 2011

Я пытаюсь наблюдать свойство BOOL вида.Поскольку существуют разные виды просмотра, я проверяю селектор и использую executeSelector для получения значения.

if( [tab respondsToSelector:@selector(canGoBack)] ) {
  [tab addObserver:self forKeyPath:@"canGoBack" 
    options:NSKeyValueObservingOptionNew 
    context:NULL];
  NSNumber* value = (NSNumber*)[tab performSelector:@selector(canGoBack)];
  canGoBack = [value boolValue];
}

Однако я случайно получил EXC_BAD в "[value boolValue]".Я проверил вкладку, она существовала, когда произошла ошибка.

После того, как я изменил код на следующий, ошибка больше никогда не перехватывается.

Ответы [ 3 ]

0 голосов
/ 31 января 2011

потому что ваш метод canGoBack возвращает BOOL, а performSelector: ожидает возвращаемое значение типа id. результат BOOL не будет адресом действительного объекта objc, который вы приведете как, а затем используете для отправки сообщения objc с помощью.

0 голосов
/ 31 января 2011

canGoBack - метод выбора, и вы пытаетесь присвоить этому методу значение bool? как это возможно? .. и во-вторых, вы уверены, что NSNumber, который вы получаете, равен только 1 или 0, в противном случае тип NSNumber для bool не использует full

0 голосов
/ 31 января 2011

Я думаю, что вы используете canGoBack как функцию, а также как значение bool.В этом проблема.

...