如何删除所有performSelector:withObject:afterDelay:?

时间:2010-01-21 04:24:03

标签: iphone objective-c exc-bad-access

当解除分配一个EXC_BAD_ACCESS的对象时,我跑进了performSelector:withObject:afterDelay,其中选择器方法正在调用另一个对象并且我正在释放该对象......

//我班上的某个地方我正在打电话

[self performSelector:@selector(callObject1Function) withObject:nil afterDelay:2.0];


- (void)callObject1Function{
   [object1 function1]  // Here i am getting "EXC_BAD_ACCESS"
}

- (void)dealloc {
 [object1 release];
 [super dealloc];
}

我只是不明白我想当你dealloc对象时,应该删除或取消与对象相关的所有内容,甚至延迟performSelector!有人可以解释一下,谢谢......

2 个答案:

答案 0 :(得分:27)

使用NSObject

-cancelPreviousPerformRequestsWithTarget:selector:object: 

取消任何待处理的执行选择器。

答案 1 :(得分:23)

我在我的所有应用程序中使用了以下代码并且它正在运行。

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(MethodName) object:nil];

谢谢, Hemang。