繁体   English   中英

目标C,一次一种方法?

[英]Objective C, one method at a time?

如果我在cocos2d中创建一个简单的Xcode项目,我总是想知道在以下情况下会发生什么:

方法A每0.01秒安排一次

方法B每1秒安排一次

现在假设方法B是一个很大的方法,需要花一点时间来计算。 是否会被方法A打断?

换句话说,一个方法总会在另一个方法开始之前完成吗?

我没有创建线程或任何东西。

通常,当您在UI应用程序的UI线程中调度内容时,一旦启动特定操作,它就不会被中断(错误除外)。 这不仅适用于iOS,也适用于大多数UI平台。

系统可以中断UI线程以处理硬件中断(或者,例如,由于接收到的单元信号引起的中断),但是这些中断对于应用程序(大部分)是“透明的”。

但是你永远不会被自己的行动打断。

这假设您将使用NSTimer来安排您的方法,并且两个方法都将在同一个runloop上进行处理(即,每个方法不使用单独的线程,这通常在您希望安排两个独立运行的方法时完成)。

该引用直接来自苹果网站上的NSTimer 类参考概述部分

如果在长时间标注期间或在运行循环处于不监视计时器的模式下发生计时器的触发时间,则计时器在下次运行循环检查计时器之前不会触发。 因此,计时器可能发射的实际时间可能是在计划的发射时间之后的重要时间段。

也就是说,方法A的轮询机制(例如NSTimer )在方法B完成之前不会触发,假设它们处于同一个运行循环中。 方法A不会因为sé而中断方法B,而是依赖于它完成其任务。

如果您想要将方法A和方法B放在单独的线程上以便它们独立工作的信息,您可以从这里开始: Grand Central Dispatch

如果您不使用线程,则保证您的方法按顺序执行,不会中断。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM