0x0 не равно нулю. Как я могу исправить ошибку - PullRequest
1 голос
/ 07 марта 2012

Я добавил проверку на ноль, но проблема все еще существует.Как исправить ошибку.

enter image description here

enter image description here

ОБНОВЛЕНИЕ: Я добавил некоторый код.

@property (nonatomic, retain) IBOutlet UIButton *btnReader;
IBOutlet UILabel *_lbReader;

- (void)dealloc 
{
 [btnReader release];
 [super dealloc];
}

ОБНОВЛЕНИЕ2 Я обнаружил возможную проблему.

- (void)onRotation:(NSNotification *)notification
{
 if (btnReader!= nil && _lbReader!=nil) 
 {
    _lbReader.text = btnReader.titleLabel.text;
 }     
}

ОБНОВЛЕНИЕ3 Я использую onRotation в своем UIViewController.

Ответы [ 3 ]

1 голос
/ 07 марта 2012

Это невозможно узнать, не увидев больше кода, но я иногда обнаруживал, что «странные» ошибки EXC_BAD_ACCESS могут возникать из-за того, что какой-то фрагмент кода записывает в память, чего не должно быть. Например, это вызвало у меня несколько часов головной боли:

NSLog(@"Error code: %i", [dict objectForKey:@"key"]);

Нет, компилятор не предупредил меня. Dict возвращал объект NSString, но ему было дано только место для записи в целое число. Так что это «закончилось» написанием какого-то другого объекта. Ошибки казались случайными, но если бы я выполнял определенные шаги точно, я мог бы их воспроизвести. Тьфу, я ненавидел отслеживать это до 20 тысяч строк кода.

Итак, проверьте что-то подобное в вашем коде. Вы создаете какой-либо низкоуровневый объект c (например, массив c)? Используете ли вы какое-либо ядро ​​«заполнить пустым» (например: Core-Graphics, core-text, core-animation)? Иногда они используют объекты / методы более низкого уровня c, и если вы не используете их правильно, вы можете писать в память другого объекта.

Наконец, дважды проверьте все форматы NSString (как в NSLog, указанном выше). Убедитесь, что все ваши заполнители соответствуют объектам / примитивам, возвращенным им.

Может быть, еще кое-что нужно проверить, но это все, о чем я могу думать в данный момент.

0 голосов
/ 07 марта 2012

Как видите, btnReader не равен nil, поэтому вы проверяете, работает ли он правильно.
Похоже, вы выделяете btnReader, но без инициализации.

0 голосов
/ 07 марта 2012

Если вы не установите переменную как nil, вам не гарантируется, что она равна nil.

Если вы проверите свою точку останова, вы можете увидеть значение 0x020 f.ex. Когда ваше приложение запускается, вы должны установить переменные равными nil вручную.

Я продолжаю решать эту проблему сам.

Я думаю, что это исправлено либо под iOS 5, либо, по крайней мере, если вы используете ARC

РЕДАКТИРОВАТЬ:

Сначала я не видел, чтобы это были кнопки. Но ваша проверка выполняется до того, как представление будет готово. Вы должны запустить эту функцию позже в очереди, например, под viewDidLoad

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...