[英]Do methods retain arguments in Objective-C?
方法是否保留传递的参数? 如果是这样,我可以在下一行释放这些参数吗? 如果没有,那我什么时候释放这些对象(以防我在本地分配这些对象)?
语言不会自动保留参数。 但是,遵守规则的代码将在执行离开范围后保留或复制需要保留的所有内容。
换一种说法:
id object = [[SomeClass alloc] init];
[otherObject doSomethingWithObject:object];
[object release];
该代码应始终是好的,因为如果doSomethingWithObject:
需要保持它的参数周围,它会发出它retain
,如果没有,也不会。
不,他们只是处理对象,不控制内存。
您应该使用创建方法释放一些内容。 或者,如果它是属性或ivar,则应在dealloc中释放它(如果已保留)。
方法不增加引用计数。 但是,如果将其分配给具有保留计数的变量,则需要向两者显式发送一条nil消息。 当您不再想要使用变量时,可以完成释放。 因此,每当发送保留消息时,分配的变量的引用计数就会增加。 因此,您需要发送相等数量的释放消息,直到引用计数变为零为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.