Objective c 是否可以再次分配已释放的对象?

Objective c 是否可以再次分配已释放的对象?,objective-c,memory-management,alloc,Objective C,Memory Management,Alloc,如果我这样做了 Object * myObject = [[Object alloc]init]; [myObject release]; 在下一行中分配我的对象有什么问题吗 myObject = [[Object alloc]init]; 又来了?当然可以。这种技术在局部方法变量中特别有用,在局部方法变量中,您可以通过将对象重新分配为新对象来重用一次声明的对象 当然可以。这种技术在局部方法变量中特别有用,在局部方法变量中,您可以通过将对象重新分配为新对象来重用一次声明的对象 这样做是安全的

如果我这样做了

Object * myObject = [[Object alloc]init];
[myObject release];
在下一行中分配我的对象有什么问题吗

myObject = [[Object alloc]init];

又来了?

当然可以。这种技术在局部方法变量中特别有用,在局部方法变量中,您可以通过将对象重新分配为新对象来重用一次声明的对象

当然可以。这种技术在局部方法变量中特别有用,在局部方法变量中,您可以通过将对象重新分配为新对象来重用一次声明的对象

这样做是安全的

原因是myObject不是一个对象,如果您希望精确到该对象,它是一个引用或指针。这意味着您有两个完全独立的对象,但您忘记了对第一个对象的引用。

这样做是安全的


原因是myObject不是一个对象,如果您希望精确到该对象,它是一个引用或指针。这意味着您有两个完全独立的对象,但您忘记了对第一个对象的引用。

这没什么错。这就是你如何确保你不泄漏你的第一个对象

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

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

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

这没有问题。这就是你如何确保你不泄漏你的第一个对象

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

Object * myObject = [[Object alloc]init];
myObject = [[Object alloc]init];
将导致泄漏您创建的第一个对象。

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

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

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

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

如果执行myobject 1=alloc init myobject 2=alloc init,它甚至可以避免堆栈上有更多对象实例。如果执行myobject 1=alloc init myobject 2=alloc init,则每个这样的对象点都需要堆栈空间。如果执行myobject 1=alloc init myobject 2=alloc,它甚至可以避免堆栈上有更多对象实例初始化每个这样的对象指针都需要堆栈空间It是Big Nerd Ranch书籍教我的第一种方式。如果你不想记得释放重要内存,你可以使用[[[object alloc]init]autorelease]。这是Big Nerd Ranch书籍教我的第一种方式。你可以使用[[object alloc]init]autorelease]以防你不想记住释放重要记忆。