方法在Objective-C中保留参数吗?

时间:2011-07-25 07:36:41

标签: iphone memory-management

方法是否保留传递的参数?如果是这样,我可以在下一行发布这些参数吗?如果没有,那么我什么时候发布这些对象(如果我在本地分配这些对象)?

3 个答案:

答案 0 :(得分:2)

语言不会自动保留参数。但是,遵守规则的代码将保留或复制在执行离开其范围后需要保留的任何内容。

换句话说:

id object = [[SomeClass alloc] init];
[otherObject doSomethingWithObject:object];
[object release];

此代码应始终正常,因为如果doSomethingWithObject:需要保持其参数,它将发送它retain,如果不是,则不会。{/ p>

答案 1 :(得分:1)

不,他们只是处理对象,他们不控制内存。

你应该在它创建的方法中发布一些东西。 或者,如果它是属性或ivar,您应该在dealloc中释放它(如果它被保留)。

答案 2 :(得分:0)

方法不会增加引用计数。但是,如果将其分配给具有保留计数的变量,则需要向两者明确发送nil消息。当您不再想要使用它时,可以完成变量的释放。因此,只要向其发送保留消息,分配的变量就会使其引用计数递增。因此,您需要发送相同数量的释放消息,直到引用计数变为零。