私はreplaceObjectAtIndexとし、removeObjectAtIndex/を挿入し、それは両方のケースで墜落してみました。ここで
が私のコードです:
NSMutableArray *arr = [[[NSMutableArray alloc] init] autorelease];
NSMutableArray *arrMatched = [[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] objectAtIndex:1];
if([arrMatched count] > 0) {
[[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] replaceObjectAtIndex:1 withObject:arr];
// [[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] removeObjectAtIndex:1];
// [[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] insertObject:arr atIndex:1]; }
アップデート: 私は、トレースに以下を参照してください。
'[__ NSCFArray replaceObjectAtIndex:withObject::]変異メソッドは、不変オブジェクトへ を送りました'2016年7月28日23:35:15.818 WP [2213:52307] ***終端原因 キャッチされない例外 'NSInternalInconsistencyException' へのアプリは、理由: -
[[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] removeObjectAtIndex:0]; [[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] insertObject:[NSNumber numberWithBool:YES] atIndex:0];
更新: 内側の配列は次のように作成されます
NSMutableArray *arrayOfLevelInfo = [[[NSMutableArray alloc] init] autorelease]; [arrayOfLevelInfo addObject:[NSNumber numberWithBool:NO]]; NSMutableArray *pairs = [[NSMutableArray alloc] initWithCapacity:8]; [arrayOfLevelInfo addObject:pairs]; [arrayOfLevelInfo addObject:[NSNumber numberWithInt:0]]; [arrayOfLevelInfo addObject:[NSNumber numberWithInt:0]]; [arrayOfLevelInfo addObject:[NSNumber numberWithInt:0]];
私も同じクラッシュ私はのNSNumberを交換していた場合(インデックス0)を得ました
クラッシュログをポストします。 –
配列の可変コピーを作成する必要があります – WMios
インデックスcに格納されている配列がNSMutableArrayではなくNSArrayであるように見えます。これをNSMutableArrayにすると、このクラッシュは消えるはずです。 – ghostatron