Objective c 使用temp分配,为什么这样更好?

Objective c 使用temp分配,为什么这样更好?,objective-c,Objective C,为什么这个方法(使用临时变量)比这个好 //.h file @property(nonatomic, retain) NSMutableDictionary *data; //.m file NSMutableDictionary *temp = [[NSMutableDictionary alloc] init]; self.data = temp; [temp release]; 有什么区别吗?第二种方法泄漏了新创建的词典。您可以使用: self.data = [[NSMutableDi

为什么这个方法(使用临时变量)比这个好

//.h file
@property(nonatomic, retain) NSMutableDictionary *data;

//.m file
NSMutableDictionary *temp = [[NSMutableDictionary alloc] init];
self.data = temp;
[temp release];

有什么区别吗?

第二种方法泄漏了新创建的词典。您可以使用:

self.data = [[NSMutableDictionary alloc] init];
它会和你的第一个例子一样安全


编辑以使OP的更新与问题相匹配。

第二种方法泄漏了新创建的词典。您可以使用:

self.data = [[NSMutableDictionary alloc] init];
它会和你的第一个例子一样安全


编辑以匹配OP对问题的更新。

此代码将添加到“init”方法中,我在创建对象时没有输入任何内容,但我将稍后添加值。@LCYSoft,这不起作用。一旦创建了
NSDictionary
,就不能将任何对象添加到该词典中。也许你想要
NSMutableDictionary
?它是一个不可变的字典。以后不能添加值。如果以后要添加值,请使用NSMutableDictionary。我删除了我的答案,并对这个答案进行了升级,因为它基本上是相同的,Carl首先回答。此代码将添加到“init”方法中,我在创建对象时没有任何输入,但我将在以后添加值。@LCYSoft,这行不通。一旦创建了
NSDictionary
,就不能将任何对象添加到该词典中。也许你想要
NSMutableDictionary
?它是一个不可变的字典。以后不能添加值。如果您以后想添加值,请使用NSMutableDictionary。我删除了我的答案,并对这一个进行了升级,因为它基本上是相同的,Carl首先回答。