调用方法时,方法是否会调用参数?

时间:2011-05-12 13:26:33

标签: objective-c memory-management methods concurrent-programming

如果我使用参数调用Objective-C中的方法并在后面释放参数。

id argumentI = [Object new]; 
[ classA method1: argumentI ];
[ argumentI release ];

然后我知道在方法1结束后释放参数,因为线条是线性处理的。 但是当我在后台线程中调用该方法时:

[ NSThread detachNewThreadSelector:@selector(method1) toTarget:self withObject:argumentI ];
[ argumentI release ];

然后主线程释放对象,而后台作业使用参数进行处理 (接受后,在调用方法之前,retainCount将为1)。 我可以得到一个错误,因为使用了一个Zombie(使用一个已经解除分配的对象)?

问题是:

方法是否对作为参数的对象调用retain?或者我是否需要在方法开头调用retain,如果它像上面的问题一样?

1 个答案:

答案 0 :(得分:2)

来自detachNewThreadSelector:toTarget:withObject:

documentation

  

在执行分离线程期间保留对象aTarget和anArgument,然后释放。