【发布时间】:2010-10-12 23:10:46
【问题描述】:
我有许多类似于以下的功能:
+ (NSArray *)arrayOfSomething
{
NSMutableArray *array = [NSMutableArray array];
// Add objects to the array
return [[array copy] autorelease];
}
我的问题是关于这个方法的最后一行:返回可变对象并避免复制操作,还是返回不可变副本更好?是否有充分的理由避免返回不期望的可变对象?
(我知道返回 NSMutableArray 是合法的,因为它是 NSArray 的子类。我的问题是这是否是个好主意。)
【问题讨论】:
-
当然,您给出的示例可以只返回原件而不首先创建副本。另外,鉴于这是一个类方法(顺便说一下,不是函数),你真的需要每次都创建一个新的数组实例吗?如果您缓存了副本,那么这一点几乎没有实际意义。
-
+1 因为我学到了一些非常重要的东西,所有 Objective-C 程序员在研究答案时都应该知道。
标签: objective-c