2017-07-13 3 views
0

私は、次のログとの奇妙表示されます私のアプリの1からクラッシュを受け取っ:NSMutableArrayの奇妙なクラッシュ - removeObjectAtIndex

*キャッチされない例外が原因アプリ「NSRangeException」を終了、理由:「* - [__ NSArrayM removeObjectAtIndex:]:インデックスの境界を越えて4294967293 [0 .. 4294967293]」

スタック当たり、これはコードの一部を下方から来ているトレース:

if ([self.itemList count] > 0) { 
    [self.itemList removeAllObjects]; 
} 

私の理解しているところでは、​​は常に安全な操作であり、このようなクラッシュに終わるべきではありません。私はここで何かを逃していますか?正しい方向への指導は本当に役に立ちます。

EDIT:ここ

itemListプロパティが宣言されています:

@property (nonatomic, strong) NSMutableArray *itemList; 
+0

とどのようにその配列を割り当てるために:またここに同様の質問で述べたように@synchronized使用してみては? – KKRocks

+0

この条件を試してください:if([self.itemList isKindOfClass:[NSMutableArray class]]){//ここでオブジェクトを削除} – KKRocks

+2

本当にクラッシュがこれらのコード行から来たものと確信していますか?あなたは 'removeObjectAtIndex'を呼び出す他のコードを持っていますか?あなたのコードはマルチスレッドですか? – rmaddy

答えて

0

それが最も可能性の高い非アトミックという性質によって引き起こされます。このコードはマルチスレッドであり、スレッドセーフではないプロパティを使用しています。 ' - インデックスが範囲を超え4294967293 [0 .. 4294967293] [__ NSArrayM removeObjectAtIndex::] *:'

このエラーはキャッチされない例外により 'NSRangeException'、理由にアプリを終了

関連する問題