【发布时间】:2011-11-07 18:05:04
【问题描述】:
如果我这样做了
Object * myObject = [[Object alloc]init];
[myObject release];
在下一行分配我的对象有什么问题吗
myObject = [[Object alloc]init];
再来一次?
【问题讨论】:
标签: objective-c memory-management alloc
如果我这样做了
Object * myObject = [[Object alloc]init];
[myObject release];
在下一行分配我的对象有什么问题吗
myObject = [[Object alloc]init];
再来一次?
【问题讨论】:
标签: objective-c memory-management alloc
这样做是安全的。
原因是myObject 不是对象,它是对象的引用(或指针,如果你想准确的话)。这意味着您有 2 个完全独立的对象,但您忘记了对第一个对象的引用。
【讨论】:
完全没有问题。
[myobject release];释放myObject指向的对象。
稍后,myobject = [[Object alloc] init]
将使myobject 指向另一个对象。
【讨论】:
这并没有错。这就是您确保不会泄漏您的第一个对象的方法。
但是,从技术上讲,您并没有再次分配释放的对象。您只是再次使用旧指针。
Object * myObject = [[Object alloc]init];
myObject = [[Object alloc]init];
将导致您创建的第一个对象泄漏。
【讨论】:
当然可以。这种技术在局部方法变量中特别有用,您可以通过将其重新分配为新对象来重用一次声明的对象..!!
【讨论】: