1

アプリをテストしているデバイスのクラッシュログを見ていると、次の行が表示されます...

objc_exception_throw + 33

[__NSArrayM insertObject:atIndex:] +187

これが発生するコードは以下のとおりです。appDataはNSDictionaryであり、imageUrlがインターネット上のpngファイルへのURLであると期待しています。

for (int i = 1; i <= [self getNumberOfScreenshots]; i++) {
    pathToUrl = @"screenshot_";
    pathToUrl = [pathToUrl stringByAppendingString:[[NSNumber numberWithInt:i] stringValue]];
    imageUrl = [self.appData valueForKey:pathToUrl];
    imageData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:imageUrl]];
    [NSMutableArrayObj addObject:imageData];
}

このタイプのエラーの原因は何ですか?エラーが発生することは非常にまれです。URLからpng画像をダウンロードできないためにimageDataがnilになることがあるため、NSMutableArrayObjに追加しようとすると例外がスローされますか?

ありがとう!

4

1 に答える 1

0

エラーをより具体的に説明していないため、2つの理由が考えられます

1)実際にはメモリを配列に割り当てていません

2) nil 値を配列に挿入します。nil の挿入を停止するには、次のようにします。

 if(imageData)
 {
   [NSMutableArrayObj addObject:imageData];
 }
于 2012-08-02T08:17:37.333 に答える