[英]Do we need to release block variable manually in dealloc method under Obj-C ARC mode?
[英]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.