Печать объекта - приложение для iPhone - PullRequest
0 голосов
/ 14 июля 2011

Я пытаюсь распечатать объект с именем Contact (расширение NSObject, которое я написал).

Когда мое приложение запускается впервые, у меня есть следующий код:

NSMutableArray *arr = [UserData getGroupNames];
    NSLog(@"group names are %@",arr);
    for(int i = 0; i < [arr count]; i++) {
        NSString *name = [arr objectAtIndex:i];
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        NSData *data = [defaults objectForKey:name];
        NSArray *a = [NSKeyedUnarchiver unarchiveObjectWithData:data];
        NSLog(@"name = %@",name);
        NSLog(@"array count is %i",[a count]);
        for(int i = 0; i < [a count]; i++) {
            NSLog(@"on index %i",i);
            Contact *c = [a objectAtIndex:i];
            NSLog(@"got contact");
            if(c == nil)
                NSLog(@"it's nil!");    
            NSLog(@"contact first name = %@",[c getFirst]);
            NSLog(@"got contact %@",c);

Итак, я получаю свой массив с именем "a" и пытаюсь распечатать его. Ну, это не работает. Программа просто сидит там и ничего не делает. Он не выдает ошибку и не завершает работу, он просто перестает что-либо делать.

Итак, я печатаю счетчик, и получается, что он равен 1. Итак, ясно, что в массиве что-то есть. Итак, я беру первый Контакт из массива, и мои отпечатки на консоли "получили контакт" в порядке.

Затем я проверяю, является ли этот контакт нулевым. Ну, это не так.

Затем я пытаюсь распечатать контакт. И моя программа перестает работать. В консоли я просто вижу "(gdb)" и ничего не печатает, и ничего не продолжает работать. Программа просто сидит.

Что происходит? Я просто печатаю контакт (у которого, кстати, настроен метод описания, который только печатает строку NSString).

1 Ответ

0 голосов
/ 14 июля 2011

Держу пари, c - плохой объект.Попробуйте NSStringFromClass([c class]), но также попробуйте войти в отладчик и посмотреть, как он работает.

...