【发布时间】:2009-07-14 03:11:46
【问题描述】:
如果我有一个将 performSelector 设置为延迟后触发的视图:
[self performSelector:@selector(generateBall) withObject:NULL afterDelay:1.5];
...但是我在选择器触发之前删除了该视图(例如,由于用户交互),然后我的应用程序崩溃了。
有没有办法杀死该视图的 dealloc 方法中的延迟选择器?
编辑:
我都试过了:
[[NSRunLoop mainRunLoop] cancelPerformSelector:theBall target:self argument:nil];
和
[[NSRunLoop currentRunLoop] cancelPerformSelector:theBall target:self argument:nil];
虽然两者都有效(允许我加载新视图),但加载前一个视图最终会给我一个灰屏。
除了列出的 Apple 文档之外,我找不到任何关于 cancelPerformSelector 的教程或其他信息,而且关于线程和运行循环的文档似乎非常复杂(主要是因为它们没有列出工作代码示例,这将使我更容易逐步了解并了解发生了什么)。
【问题讨论】: