繁体   English   中英

我是否需要在Obj-C中发布id?

[英]Do I need to release id's in Obj-C?

例:

MyClass *funkStation = [[MyClass alloc] init];
[funkStation dance];
id tmp = funkStation;
...
[funckStation release];

我知道在完成funkStation对象后我需要释放它,但是id tmp怎么样? 我认为它不是原始对象的副本,而只是指向内存空间的指针。

那是正确的。 你只发布funkStation ,但不发布tmp

只有在给它保留指针或原始对象的副本时才应释放tmp

id tmp = [funkStation retain];

如果使用alloc显式分配对象,则需要释放它。 与副本相同。

ID是一个指针,因此当您指定它时,它只分配指针值,因此您不需要释放这两个变量,因为它们都将引用同一个对象。 如果你这样做,你肯定会遇到段错误。

tmp和funkstation指的是同一个对象。 您只需要释放一次此对象。 发送到funkstation和tmp的发布做同样的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM