TableViewclass
の作成中に間違いを犯し、誤って定義したままにしました@property
。copy
@property (copy, nonatomic) NSMutableArray *words;
配列を「正しく」初期化しました: (これは 3 回目の試行です。mutableCopy や他のより良い方法を使用していないという事実は無視してください)
NSArray *fixedWords = @[@"Eeny", @"Meeny", @"Miny", @"Moe", @"Catch", @"A", @"Tiger", @"By", @"His", @"Toe"];
NSMutableArray *mutWords = [[NSMutableArray alloc] initWithArray:fixedWords];
self.words = mutWords;
しかし、後で配列を並べ替えようとすると、removeObjectAtIndex 行でクラッシュしました。
id object = [self.words objectAtIndex:fromIndexPath.row];
NSUInteger from = fromIndexPath.row;
NSUInteger to = toIndexPath.row;
[self.words removeObjectAtIndex:from];
エラーメッセージで
unrecognized selector sent to instance
これは、コピーが NSMutableArray を割り当てると、標準の (変更不可能な) NSArray が作成されることを意味するためであることを理解するために、多くの調査が必要でした。これが正しい動作である理由を誰かが説明できますか?