16

我在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延迟!

4

2 回答 2

28

使用NSObject's:

-cancelPreviousPerformRequestsWithTarget:selector:object: 

取消任何挂起的执行选择器。

于 2010-01-21T04:26:44.360 回答
24

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

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

谢谢,赫芒。

于 2012-12-28T05:00:54.230 回答