Сбой приложения iPad в обзоре Apple - невозможно воспроизвести в симуляторе, есть журнал сбоев - PullRequest
0 голосов
/ 01 апреля 2010

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

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

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

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

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%. Может кто-нибудь сказать мне, что мне здесь не хватает?

Ответы [ 2 ]

4 голосов
/ 01 апреля 2010

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

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

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

  1. Гарантируется ли [self.albumList objectAtIndex:albumCurrent] NSMutableDictionary?
  2. Вы забыли включить noImage.png в подчинение?
1 голос
/ 06 апреля 2010

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

...