【发布时间】:2015-06-17 07:49:56
【问题描述】:
我正在阅读另一个程序员的代码,所以我发现了这个:
@property(nonatomic, strong) NSArray *assets;
----
_assets = [@[] mutableCopy];
__block NSMutableArray *tmpAssets = [@[] mutableCopy];
这是某种诡计吗?为什么他使用 mutableCopy 到不可变数组 assets ?他为什么不直接创建它:
self.assets = [NSArray new];
__block NSMutableArray *tmpAssets = [NSMutableArray new];
?
【问题讨论】:
-
仅仅因为 property
assets是不可变的,并不一定意味着支持它的 instance 变量_assets是不可变的.永远不要让任何属性具有可变类型是一种很好的做法。使用NSMutableArray*实例变量支持可变索引集合属性很方便,但只允许通过indexed collection mutation accessors 对其进行变异。
标签: ios objective-c nsmutablearray nsarray nscopying