2010-04-01 1 views
0

Мне явно не хватает чего-то очевидного здесь и я бы очень признателен за ввод. Я неоднократно пытался подать заявку на Apple (iPad в этом случае), которая терпит крах при их тестировании, но я не могу воспроизвести ситуацию на моем конце (очевидно, что на данный момент у меня есть только проклятый симулятор).Падение приложения iPad в обзоре Apple - не может быть реплицировано в симуляторе, есть журнал сбоев

Журнал аварии выглядит следующим образом:

Date/Time:  2010-04-01 05:39:47.226 -0700 
OS Version:  iPhone OS 3.2 (7B367) 
Report Version: 104 

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x00000000, 0x00000000 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libSystem.B.dylib    0x000790a0 __kill + 8 
1 libSystem.B.dylib    0x00079090 kill + 4 
2 libSystem.B.dylib    0x00079082 raise + 10 
3 libSystem.B.dylib    0x0008d20a abort + 50 
4 libstdc++.6.dylib    0x00044a1c __gnu_cxx::__verbose_terminate_handler() + 376 
5 libobjc.A.dylib     0x000057c4 _objc_terminate + 104 
6 libstdc++.6.dylib    0x00042dee __cxxabiv1::__terminate(void (*)()) + 46 
7 libstdc++.6.dylib    0x00042e42 std::terminate() + 10 
8 libstdc++.6.dylib    0x00042f12 __cxa_throw + 78 
9 libobjc.A.dylib     0x000046a4 objc_exception_throw + 64 
10 CoreFoundation     0x00090c6e +[NSException raise:format:arguments:] + 74 
11 CoreFoundation     0x00090d38 +[NSException raise:format:] + 28 
12 Foundation      0x00002600 -[NSCFDictionary setObject:forKey:] + 184 
13 iPadMosaic      0x00003282 -[iPadMosaicViewController getAlbumThumbs] (iPadMosaicViewController.m:468) 
14 Foundation      0x000728fe __NSFireDelayedPerform + 314 
15 CoreFoundation     0x00022d1c CFRunLoopRunSpecific + 2092 
16 CoreFoundation     0x000224da CFRunLoopRunInMode + 42 
17 GraphicsServices    0x000030d4 GSEventRunModal + 108 
18 GraphicsServices    0x00003180 GSEventRun + 56 
19 UIKit       0x000034c2 -[UIApplication _run] + 374 
20 UIKit       0x000019ec UIApplicationMain + 636 
21 iPadMosaic      0x00002234 main (main.m:14) 
22 iPadMosaic      0x00002204 start + 32 

Мое понимание в том, что я botching Словарь добавить как-то. Соответствующие строки кода:

for (NSDictionary *album in self.albumList) { 
    // Get image for each album cover 

    UIImage *albumCover; 

    // Loop through photos to get URL of cover based on photo ID match 
    NSString *coverURL = @""; 
    for (NSDictionary *photo in self.photoList) { 
     if ([[photo objectForKey:@"pid"] isEqualToString:[album objectForKey:@"cover_pid"]]) { 
      coverURL = [photo objectForKey:@"src"]; 
     } 
    } 


    NSURL *albumCoverURL = [NSURL URLWithString:coverURL]; 
    NSData *albumCoverData = [NSData dataWithContentsOfURL:albumCoverURL]; 
    albumCover = [UIImage imageWithData:albumCoverData];  

    if (albumCover == nil || albumCover == NULL) { 
     //NSLog(@"No album cover for some reason"); 
     albumCover = [UIImage imageNamed:@"noImage.png"]; 
    } 

    [[self.albumList objectAtIndex:albumCurrent] setObject:albumCover forKey:@"coverThumb"]; 
} 

Это часть цикла, которая проходит через существующие словари, хранящиеся в массиве. Если извлечение обложки альбома по какой-то причине не удается, объект заполняется образцом по умолчанию, а затем добавляется. Последняя строка кода - это то, что появляется в журнале сбоев.

Он отлично работает в симуляторе, но, по-видимому, сработает 100% при тестировании на устройстве. Может ли кто-нибудь сказать мне, что мне здесь не хватает?

ответ

4

Если Фонд радикально не изменился от 3,0 до 3,2, то есть только 3 случая исключения выросшее в -setObject:forKey::

  1. метод мутирует посланного неизменный объект
  2. попытки вставить значение ноля
  3. попытка вставить ноль ключа

Очевидно, что третий случай невозможен, так что вам нужно только проверить:

  1. Действительно ли [self.albumList objectAtIndex:albumCurrent] гарантированно является NSMutableDictionary?
  2. Вы забыли включить в форму представления noImage.png?
+0

Файл изображения находится в папке Ресурсы. Сейчас мне интересно, первый вариант. Я беру результат из веб-запроса и сохраняю его в NSMutableArray. Возможно ли, что словарь в массиве, который я получаю, каким-то образом не изменен? Нужно ли мне подробно итератировать результат и построить с нуля новый массив/словарь, который изменен? Будет ли это работать в симуляторе, а не в устройстве? Когда я сбрасываю словарь, о котором идет речь, в NSLog до и после попытки добавить объект, он отлично смотрится в симуляторе. Объект UIImage существует для ключа. – Mike

+1

* Возможно ли, что словарь в массиве, который я получаю, каким-то образом не изменен? * - зависит от того, как написана библиотека. Создайте '-mutableCopy', чтобы убедиться, что он изменен. – kennytm

1

У меня была такая же проблема! Это была проблема чувствительности к регистру ... убедитесь, что файл с именем noImage.png соответствует фактическому файлу ... не NoImage.png или noimage.png ... проверьте все ваши изображения! Я пропустил открытие магазина приложений из-за 1 письма на 1 файл!

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