我犯了一个错误,同时创造一个TableView中class,并且意外地保持我@property的copy,当我定义它:
@property (copy, nonatomic) NSMutableArray *words;
Run Code Online (Sandbox Code Playgroud)
我正确地初始化了数组:(注意这是第三次尝试,所以请忽略我不使用mutableCopy和其他更好的方法这样做的事实)
NSArray *fixedWords = @[@"Eeny", @"Meeny", @"Miny", @"Moe", @"Catch", @"A", @"Tiger", @"By", @"His", @"Toe"];
NSMutableArray *mutWords = [[NSMutableArray alloc] initWithArray:fixedWords];
self.words = mutWords;
Run Code Online (Sandbox Code Playgroud)
但是当我后来重新排序数组时,它在removeObjectAtIndex行崩溃:
id object = [self.words objectAtIndex:fromIndexPath.row];
NSUInteger from = fromIndexPath.row;
NSUInteger to = toIndexPath.row;
[self.words removeObjectAtIndex:from];
Run Code Online (Sandbox Code Playgroud)
带有错误消息
unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)
进行了大量的挖掘,以确定这是因为复制意味着分配NSMutableArray会导致创建标准(不可变)NSArray.任何人都可以解释为什么这是正确的行为?