NSLog выдает ошибку во время выполнения - PullRequest
0 голосов
/ 27 января 2012

Хорошо, я знаю, что могу просто пропустить NSLog, но почему он выдает ошибку "EXC_BAD_ACCESS"?

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex2
{

    if(buttonIndex2 == 0 && waitForAction == NO)
    {
        waitForAction = YES;
        [self showAbortAlert];
        NSLog(@"%@",buttonIndex2); //This one does not crash the app

    } else if (buttonIndex2 == 1 && waitForAction == NO)
    {
        waitForAction = YES;
        [self addObject];
        NSLog(@"%@",buttonIndex2); //This one crashes the app
    } //else if
}

Ответы [ 3 ]

3 голосов
/ 27 января 2012

снова увидеть подпись метода

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex2

buttonIndex2 имеет тип NSInteger. Если вы делаете %@ в NSLog, ваш код вызывает метод description для объекта. Но buttonIndex2 не является объектом.

использовать NSLog(@"%d",buttonIndex2);

Первый (с buttonIndex == 0) не приводит к сбою приложения, потому что вы вызываете description для объекта с адресом памяти 0, который в основном совпадает с [nil description], и это совершенно законно в Objective- C.

2 голосов
/ 27 января 2012

buttonIndex2 - целочисленное использование:

NSLog(@"%d",buttonIndex2);

И прочитайте хорошую книгу о C.

2 голосов
/ 27 января 2012

Используйте %d как целое число, %@ для строк ...

NSLog(@"%d", buttonIndex); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...