NSMutableArrayを使用して問題に直面しています。空のmutableArrayをNSMutableArrayに追加するという要件に遭遇しました。最後の配列を削除すると、以前に追加したすべての配列も親配列から削除されました。ここにコード、
NSMutableArray *collections = [[NSMutableArray alloc] init];
NSMutableArray *bookSet1 = [[NSMutableArray alloc] init];
[collections addObject:bookSet1];
NSMutableArray *bookSet2 = [[NSMutableArray alloc] init];
[collections addObject:bookSet2];
NSLog(@"bookSet1==bookSet2 %d", bookSet1==bookSet2);
[collections removeObject:bookSet2];
NSLog(@"Collections count==%d", [collections count]);
結果
ArrayTest [2356:c07] bookSet1 == bookSet2 0 ArrayTest [2356:c07]コレクション数== 0
それらが同じ参照を持っているかどうかを確認しましたが、equalsメソッドがfalseを返したため、同じメモリ位置を確実に指していません。なぜこのような振る舞いなのかわからない。これを克服するための可能な解決策。