【问题标题】:How can I remove all performSelector:withObject:afterDelay:?如何删除所有 performSelector:withObject:afterDelay:?
【发布时间】:2011-01-07 14:13:48
【问题描述】:

我在释放一个具有很少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有延迟!

【问题讨论】:

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


    【解决方案1】:

    使用NSObject的:

    -cancelPreviousPerformRequestsWithTarget:selector:object: 
    

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

    【讨论】:

    • 也只是 NSObject 的 +cancelPreviousPerformRequestsWithTarget:如果你想消除所有选择器和对象执行对该目标的请求而不指定选择器和对象
    【解决方案2】:

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

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

    谢谢, 和芒。

    【讨论】:

      猜你喜欢
      • 2012-02-12
      • 1970-01-01
      • 2016-08-08
      • 2019-10-29
      • 2018-04-18
      • 2023-03-27
      • 1970-01-01
      • 2022-08-14
      • 2021-03-15
      相关资源
      最近更新 更多