可以再次分配已发布的对象吗?

时间:2011-11-07 18:05:04

标签: objective-c memory-management alloc

如果我这样做

Object * myObject = [[Object alloc]init];
[myObject release];

在下一行分配我的对象有什么不对吗

myObject = [[Object alloc]init];

再次?

4 个答案:

答案 0 :(得分:5)

这样做是安全的。

原因是myObject 不是一个对象,它是对象的引用(或指针,如果你想要精确)。这意味着你有2个完全独立的对象,但是你忘记了对第一个对象的引用。

答案 1 :(得分:4)

完全没问题。 [myobject release];释放myObject指向的对象。

稍后,myobject = [[Object alloc] init]myobject指向另一个对象。

答案 2 :(得分:2)

这没有错。这就是你确保不泄漏第一个物体的方法。

但是,从技术上讲,您不再分配已发布的对象。你刚刚再次使用旧指针。

Object * myObject = [[Object alloc]init];
myObject = [[Object alloc]init];

将导致您创建的第一个对象泄漏。

答案 3 :(得分:1)

是的当然。这种技术在本地方法变量中特别有用,你可以通过将它再次重新分配为新对象来重用一次声明的对象。!!