小编Aks*_*kar的帖子

为什么(复制,非原子)NSMutableArray属性创建NSArrays?

我犯了一个错误,同时创造一个TableView中class,并且意外地保持我@propertycopy,当我定义它:

@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.任何人都可以解释为什么这是正确的行为?

objective-c nsmutablearray nsarray ios

22
推荐指数
2
解决办法
9215
查看次数

标签 统计

ios ×1

nsarray ×1

nsmutablearray ×1

objective-c ×1