你为什么有时会把NSArray强制转换为NSMutableArray,有时你不能?

Jen*_*nny 5 iphone objective-c nsmutablearray nsarray ios

特别:

self.words = (NSMutableArray*)[self.text componentsSeparatedByString:@" "];
Run Code Online (Sandbox Code Playgroud)

只要有分隔符就可以正常工作.我看到该方法返回包含在NSArray中的原始字符串,如果没有的话.这个单元素NSArray固执地拒绝被强制转换为NSMutableArray.

但是,当我这样做时:

self.words = [NSMutableArray arrayWithArray:self.words];
Run Code Online (Sandbox Code Playgroud)

它工作得很好.

这里有什么我想念的吗?从NSArray转换为NSMutableArray是不好的做法吗?

Bry*_*hen 2

NSArray将from 转换为 to是不好的做法NSMutableArray。如果幸运的话它可能会起作用,因为数组是使用 构造的NSMutableArray,但你不能依赖它。

如果你想NSMutableArrayNSArray,使用mutableCopy

self.words = [[self.text componentsSeparatedByString:@" "] mutableCopy];
Run Code Online (Sandbox Code Playgroud)