【问题标题】:iPad application crash in Apple review - cannot replicate in simulator, have crash logApple 审查中的 iPad 应用程序崩溃 - 无法在模拟器中复制,有崩溃日志
【发布时间】:2010-04-01 15:25:00
【问题描述】:

我显然在这里遗漏了一些明显的东西,非常感谢您提供一些意见。我曾多次尝试向 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% 崩溃。谁能告诉我我在这里缺少什么?

【问题讨论】:

    标签: iphone ipad crash crash-reports


    【解决方案1】:

    如果 Foundation 没有从 3.0 彻底更改为 3.2,那么只有 3 种情况会在 -setObject:forKey: 中引发异常:

    1. 将变异方法发送到不可变对象
    2. 尝试插入零值
    3. 尝试插入 nil 键

    显然第三种情况是不可能的,所以你只需要检查:

    1. [self.albumList objectAtIndex:albumCurrent] 是否保证是 NSMutableDictionary?
    2. 您是否忘记在提交中包含noImage.png

    【讨论】:

    • 图像文件位于 Resources 文件夹中。我现在想知道第一个选项。我从 Web 请求中获取结果并将其存储在 NSMutableArray 中。我收到的数组中的字典是否可能不可变?我是否需要详细迭代结果并从头开始构建一个可变的新数组/字典?这会在模拟器中而不是在设备中工作吗?当我在尝试添加对象之前和之后将有问题的字典转储到 NSLog 时,它在模拟器中看起来很棒。 UIImage 对象是关键。
    • 我收到的数组中的字典是否可能不可变? — 取决于库的编写方式。创建一个-mutableCopy 以确保它是可变的。
    【解决方案2】:

    我遇到了同样的问题!这是一个区分大小写的问题...确保名为 noImage.png 的文件与实际文件匹配...不是 NoImage.png 或 noimage.png...检查所有图像!由于 1 个文件中的 1 个字母,我错过了打开应用商店的机会!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2012-11-15
      • 2012-06-28
      • 1970-01-01
      • 2011-12-26
      相关资源
      最近更新 更多