2009-12-11 3 views
2

я представил мое приложение к iTunesConnect и Apple, отдай следующий отчет об ошибке:NSLog делает iPhone App аварии во время Apple App Review

Thread 2 Crashed: 
0 libobjc.A.dylib     0x00003eb8 objc_msgSend + 16 
1 Foundation      0x0004c3aa _NSDescriptionWithLocaleFunc + 24 
2 CoreFoundation     0x0003d52e _CFStringAppendFormatAndArgumentsAux + 1390 
3 CoreFoundation     0x0003ceca _CFStringCreateWithFormatAndArgumentsAux + 66 
4 CoreFoundation     0x00073fd6 _CFLogvEx + 34 
5 Foundation      0x000661a4 NSLogv + 74 
6 Foundation      0x0006614a NSLog + 18 
7 mobilescan      0x00039014 -[BlaBlaBlaDao insertCategoryWithId:andName:] (BlaBlaBlaDao.m:110) 

кажется, что, когда приложение пытается напечатать журнал, это сделать сбой приложения. Это очень странно, потому что в режиме отладки, приложение забоев 2 сек затем распечатать ошибку и продолжать работать ...

От линии 110 в BlaBlaBlaDao.m, где сбой приложения у меня есть такие строки:

NSLog(@"category, id:%@, name:%@", subcategory.id, subcategory.name); 

    [subcategory addFreshfoodProductsObject:freshfoodProduct]; 

    NSError *error = nil; 
    if (![managedObjectContext save:&error]) { 
     [managedObjectContext rollback]; 
     NSLog(@"error: %@", error); 
    } 

Он исходит из примера Apple ...

Всем известно почему?

благодарит за вашу помощь!

+0

Ну, для начала вы не можете иметь член с именем id, так как это зарезервированное слово для типа в объективе-c. Вы должны начать с переименования. –

+0

Какой NSLog это не удается? Первая или вторая с ошибкой? – epatel

ответ

8

В строке формата вы ожидаете два объекта. Для ведения журнала вызывается метод -description объекта. Похоже, ваше приложение терпит крах при попытке распечатать описание одного из объектов. Возможно, что одно или оба из ваших свойств не являются объектами, а скалярными значениями. Также возможно, что одно из свойств, если оно является объектом, было выпущено в какой-то момент, и вы отправляете сообщение об освобожденном экземпляре.

Помимо сбоев, не используйте NSLog в приложении, которое вы отправляете в App Store. Нет никаких оснований для того, чтобы он был там, и все, что он делает, это сбрасывать текст на консоль каждого iPhone, на котором запущено ваше приложение. Если я не ошибаюсь, все это записывается на каждый iPhone, который будет запускать это. Не только это, но и медленное замедление вашего приложения. Либо отключите эти вызовы перед отправкой приложения, либо используйте # ifdef, чтобы локализовать их только для своих отладочных сборников.

Смежные вопросы