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

fuz*_*oat 3 objective-c

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

NSDictionary *address = [NSDictionary dictionaryWithObjectsAndKeys:@"Italy", @"Country", 
address = [NSDictionary dictionaryWithObjectsAndKeys:@"England", @"Country", nil];
Run Code Online (Sandbox Code Playgroud)

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

NSDictionary *address = [NSDictionary dictionaryWithObjectsAndKeys:@"Italy", @"Country", 
NSDictionary *address2 = [NSDictionary dictionaryWithObjectsAndKeys:@"England", @"Country", nil];
Run Code Online (Sandbox Code Playgroud)

欢呼加里

Jas*_*ien 5

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

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

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

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