首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建本地对象,优先还是更好?

创建本地对象,优先还是更好?
EN

Stack Overflow用户
提问于 2012-10-03 22:55:13
回答 2查看 65关注 0票数 0

创建一个本地对象供以后使用更好吗,如下所示

代码语言:javascript
复制
NSDictionary *dic = [NSDictionary Dictionary];

代码语言:javascript
复制
NSDictionary * dic = nil;

它是偏好的东西,还是一个比另一个更好?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-03 23:09:22

这不是“一个更好”,而是“另一个不好”。

如果您稍后要为其分配一个新对象,请将其初始化为nil,否则(您会因为丢失对error创建的第一个对象的引用而泄漏内存。)- EDIT:不,您没有泄漏内存(无论是因为自动释放还是自动引用计数,但不管怎样,这是一个额外的不必要的方法调用。)那是很糟糕的。

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

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

票数 0
EN

Stack Overflow用户

发布于 2012-10-03 23:02:12

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

例如,第一个选项:

代码语言:javascript
复制
NSMutableArray *arr = [NSMutableArray array];

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

代码语言:javascript
复制
NSDictionary *dictionary = nil;
BOOL flag;

if (flag) {
  dictionary = [NSDictionary dictionaryWithObject:@"string" forKey:@"myKey"];
}
else {
  NSArray *objects;
  NSArray *keys;
  dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12711134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档