如果我使用参数调用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,如果它像上面的问题一样?
答案 0 :(得分:2)
detachNewThreadSelector:toTarget:withObject:
的documentation的
在执行分离线程期间保留对象aTarget和anArgument,然后释放。