我有一个任务需要每1秒执行一次。 目前我有一个NSTimer每1秒重复发射一次。 我如何有后台线程(非UI线程)的计时器火灾? 我可以在主线程上触发NSTimer,然后使用NSBlockOperation来派发一个后台线程,但是我想知道是否有更高效的方法来执行此操作。
亲爱的好人们的stackoverflow, 就像上次一样,我现在提出一个我最近偶然发现的问题。 我希望那里有人能够给我一些启示。 每当我尝试在UIScrollView , MPMapView或其他东西下载一个大文件时, MPMapView我触摸iPhone屏幕,下载过程就会暂停。 谢天谢地, Jörn发表了一篇很棒的博客文章,提出了一个替代scheme,使用NSRunLoopCommonModes进行连接。 这让我看看两种模式,NSDefaultRunLoopMode和NSRunLoopCommonModes的细节,但苹果文件不好意思解释,除了说 NSDefaultRunLoopMode 处理NSConnection对象以外的input源的模式。 这是最常用的运行循环模式。 NSRunLoopCommonModes 使用此值作为模式添加到运行循环中的对象由所有已声明为“通用”模式集合中成员的运行循环模式进行监视;有关详细信息,请参阅CFRunLoopAddCommonMode的说明。 CFRunLoopAddCommonMode 源,定时器和观察器被注册到一个或多个运行循环模式,并且只在运行循环以这些模式之一运行时才运行。 常用模式是一组运行循环模式,您可以定义一组由这些模式共享的源,定时器和观察器。 例如,可以在每个特定的运行循环模式下注册一个源代码,而不是将其注册到运行循环的公共伪模式中,而是在共同模式集的每个运行循环模式下自动注册。 同样,当模式被添加到一组共同模式时,已经注册到公共伪模式的任何源,定时器或观察者被添加到新添加的共同模式。 任何人都可以用人类语言来解释这两个吗?
任何人都可以解释什么是NSRunLoop ? 所以我知道NSRunLoop是一个与NSThread连接的东西吗? 所以假设我创build了一个线程 NSThread* th=[[NSThread alloc] initWithTarget:self selector:@selector(someMethod) object:nil]; [th start]; -(void) someMethod { NSLog(@"operation"); } 所以这个线程完成后,他的工作权利? 为什么使用RunLoops或在哪里使用? 从苹果文档我已经看了一些东西,但不清楚,所以请尽可能简单解释