2010-01-21 14 views
15

我重新分配有几个performSelector:withObject:afterDelay其中,选择方法是调用另一个对象,我释放对象的对象...我如何删除所有performSelector:withObject:afterDelay:?

//在我班上有些地方我打电话

当跑至 EXC_BAD_ACCESS
[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与延迟!可一些请解释一下,谢谢.....

回答

27

使用NSObject的:

-cancelPreviousPerformRequestsWithTarget:selector:object: 

以取消所有待进行选择。

+18

也只是NSObject的+ cancelPreviousPerformRequestsWithTarget:如果你想消除所有的选择器和对象执行请求到那个目标没有指定选择器和对象 – Bogatyr 2010-08-25 09:48:17

23

我在我的所有应用程序中使用了以下代码,它正在工作。

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

谢谢, Hemang。