示例:
MyClass *funkStation = [[MyClass alloc] init];
[funkStation dance];
id tmp = funkStation;
...
[funckStation release];
我知道在完成funkStation对象后我需要释放它,但是id tmp怎么样? 我认为它不是原始对象的副本,而只是指向内存空间的指针。
答案 0 :(得分:4)
这是正确的。您只发布funkStation
,但不发布tmp
。
tmp
只有在你给它一个保留指针或原始对象的副本时才会被释放:
id tmp = [funkStation retain];
答案 1 :(得分:0)
如果使用alloc显式分配对象,则需要释放它。 与副本相同。
ID是一个指针,所以当你指定它时,它只分配指针值,所以你不需要释放这两个变量,因为它们都会引用同一个对象。如果你这样做,你肯定会遇到段错误。
答案 2 :(得分:0)
tmp和funkstation指的是同一个对象。您只需要释放一次此对象。发送到funkstation和tmp的发布做同样的事情。