2010-04-01 36 views
0

我很明顯錯過了在這裏明顯的東西,真的很感激一些輸入。我曾多次嘗試向蘋果公司(本例中爲iPad)提交應用程序,測試時它們正在崩潰,但我無法複製我的情況(顯然,我只有該死的模擬器才能在此處使用)。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%。誰能告訴我我在這裏失蹤了什麼?

回答

4

如果基礎不從根本上,從3.0到3.2改變了,那麼就只有的3個例臨牀異常在-setObject:forKey:提出:

  1. 變異方法發送到不可變對象
  2. 試圖插入空值
  3. 嘗試插入無鑰匙

顯然第三的情況下是不可能的,所以你只需要檢查:

  1. [self.albumList objectAtIndex:albumCurrent]保證是一個NSMutableDictionary?
  2. 你忘了在提交中包含noImage.png嗎?
+0

圖像文件位於Resources文件夾中。我現在想知道第一個選項。我從Web請求中獲取結果並將其存儲在NSMutableArray中。我收到的數組中的字典是否有可能以某種方式不可變? 我是否需要詳細地遍歷結果並從頭開始構建可變的新數組/字典? 這將工作在模擬器,而不是在設備?當我在試圖添加對象之前和之後將有問題的字典轉儲到NSLog時,它在模擬器中看起來很棒。 UIImage對象就是這個鍵。 – Mike 2010-04-01 15:38:36

+1

*我收到的數組中的字典有可能以某種方式不可變嗎?* - 取決於庫的寫法。製作一個'-mutableCopy'來確保它是可變的。 – kennytm 2010-04-01 15:48:57

1

我有同樣的問題!這是一個大小寫敏感的問題...確保名爲noImage.png的文件與實際文件匹配...不是NoImage.png或noimage.png ...檢查所有圖像!由於1個文件中的1個字母,我錯過了應用商店的開放!

相關問題