创建本地对象,首选项还是更好?

时间:2012-10-03 14:55:13

标签: objective-c foundation

创建本地对象以供以后使用(如

)更好
NSDictionary *dic = [NSDictionary Dictionary];

NSDictionary * dic = nil;

是偏好还是比另一个好?

2 个答案:

答案 0 :(得分:0)

如果稍后将使用该对象,则应使用第一个选项对其进行实例化。如果你必须在一些if-else块中创建一个对象,你将使用一些自定义值重新初始化它,那么第二个选项就是你要去的地方。

例如第一个选项:

NSMutableArray *arr = [NSMutableArray array];

for (int i = 0; i < 5; i++) {
  [arr addObject:@"string"];
}

NSDictionary *dictionary = nil;
BOOL flag;

if (flag) {
  dictionary = [NSDictionary dictionaryWithObject:@"string" forKey:@"myKey"];
}
else {
  NSArray *objects;
  NSArray *keys;
  dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
}

答案 1 :(得分:0)

它不像'那个更好',就像'另一个是坏'。

如果您稍后要为其分配一个新对象,请将其初始化为nil,否则(通过丢失对由错误创建的第一个对象的引用来泄漏内存。) - 编辑:不,您没有泄漏内存(因为自动释放或自动引用计数,但无论如何,这是一个额外的不需要的方法调用。)这很糟糕。

如果它是一个可变集合,请在使用之前创建它,否则它将继续为零并且基本上忽略发送给它的所有消息,这也很糟糕。

结论:这不是一个偏好的问题 - 你必须从逻辑上思考,并选择适合你使用它的特定目的。