重用自动释放的变量名称?

时间:2010-07-05 09:57:21

标签: objective-c

我很好奇是否重用分配给方便方法的变量是好的。

NSDictionary *address = [NSDictionary dictionaryWithObjectsAndKeys:@"Italy", @"Country", 
address = [NSDictionary dictionaryWithObjectsAndKeys:@"England", @"Country", nil];

或者我应该只分配第二个新变量?

NSDictionary *address = [NSDictionary dictionaryWithObjectsAndKeys:@"Italy", @"Country", 
NSDictionary *address2 = [NSDictionary dictionaryWithObjectsAndKeys:@"England", @"Country", nil];
欢呼加里

1 个答案:

答案 0 :(得分:5)

第一个示例将使地址指针指向另一个对象,因此您将丢失对原始字典的引用。

因为它们是自动释放的,所以它不会泄漏内存,但您可能希望将来能够访问这两个词典。第一个例子不会为你做那个,你将丢失第一个字典。

第二个例子要好得多,它允许你独立引用两个词典,而不会踩到其中一个。

但是,如果您要合并两个词典,则应创建第一个词典的可变副本,然后使用addEntriesFromDictionary:合并这两个词典。不要忘记在执行此操作时释放/自动释放您创建的可变副本。