NSMutableArray *myArray = [[NSMutableArray alloc] init];
MyClass *obj1 = [[MyClass alloc] init];
[myArray addObject: obj1];
如果我想重用变量名,如何在这里清理旧的obj1引用。不破坏阵列中的任何东西。
obj1 = nil
OR
[obj1 release];
//有什么区别?
obj1 = [[MyClass alloc] init];
[myArray addObject: obj1];
........... 继续使用obj1并添加数组。
答案 0 :(得分:2)
将nil
分配给变量无效。您需要调用release
以确保正确清理旧对象。
答案 1 :(得分:1)
当您向数组添加对象时,数组存储变量地址,因此您可以自由地使用临时变量(obj1
)来创建另一个对象 - 数组中的值不会被销毁。
但是由于数组保留了用于正确内存管理的元素,因此在将其推送到数组后需要释放obj1
。所以你需要[obj1 release];
行