我有一个 NSTimer
定义如下:
[NSTimer scheduledTimerWithTimeInterval:self.speed target:self selector:@selector(displayTextOverTime:) userInfo:nil repeats:YES];
方法 displayTextOverTime
显示一些文本,然后一旦显示最后一段文本,它就会使它的计时器无效并调用另一个方法进行处理(它本身可能需要启动一个 NSTimer
来显示文本)。
有没有标准的方法来做这类事情?
我最初的方法是简单地让 displayTextOverTime
直接调用另一个方法,但这让我在嵌套 NSTimer
的地方出现了一些奇怪的行为(它永远不会死,因为即使它们无效并且不会再次循环,它们也没有“完成”,因为它们内部的计时器仍在运行......或者......什么?),这不是我想要的。有什么方法可以说“调用此方法,但在 NSTimer
之外执行”,就像回到主线程一样?
具体来说,我看到被杀死的计时器比启动的计时器多(我有一个方法可以杀死任何传入的计时器,这样我就可以在它被杀死时进行记录)。
最佳答案
要准确回答您的问题,您可以使用 Grand Central Dispatch 在计时器之外运行一个函数。如果你想运行这个函数:
dispatch_async(dispatch_get_main_queue(), ^{
(your function or block of code goes here)
});
这将在您的计时器之外运行该 block 。您可以选择在主线程、全局线程或带有您创建的队列的自定义线程上执行此操作。
关于ios - 从 NSTimer 回到主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714244/