Iphone 目标C,一次一种方法?

Iphone 目标C,一次一种方法?,iphone,objective-c,xcode,cocos2d-iphone,Iphone,Objective C,Xcode,Cocos2d Iphone,如果我在cocos2d中创建一个简单的Xcode项目,我总是想知道在以下情况下会发生什么: 方法A每0.01秒计划一次 方法B每1秒计划一次 现在假设方法B是一个大型方法,需要花费一些时间来计算。它会被方法A打断吗 换句话说,一个方法总是在另一个方法开始之前完成吗 我没有创建线程或任何东西 如果您不使用线程,您的方法将保证按顺序执行,不会中断。一般来说,当您在UI应用程序的UI线程中调度内容时,一旦启动特定操作,就不会中断(错误除外)。这不仅适用于iOS,也适用于大多数UI平台 系统可能会中断U

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

方法A每0.01秒计划一次

方法B每1秒计划一次

现在假设方法B是一个大型方法,需要花费一些时间来计算。它会被方法A打断吗

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


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

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

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

系统可能会中断UI线程以处理硬件中断(或者,例如,由于接收到的小区信号而导致的中断),但这些中断对应用程序来说(大部分是)“透明的”


但是您永远不会被自己的操作打断。

这假设您将使用,比如说,一个
NSTimer
来调度您的方法,并且这两个方法将在同一个runloop上处理(即,当您希望调度两个方法独立运行时,通常不会对每个方法使用单独的线程)

这段话直接取自苹果网站上的
NSTimer

如果计时器的触发时间发生在长调用期间或运行循环处于不监视计时器的模式时,则计时器会触发 直到下次运行循环检查计时器时才触发。 因此,计时器可能触发的实际时间可以是 预定点火时间后的一段重要时间

也就是说,方法A的轮询机制(
NSTimer
)在方法B完成之前(假设它们在同一个运行循环中)不会启动。方法A不会中断方法B,但依赖于它完成任务

如果您想了解有关将方法A和方法B放置在单独线程上以便它们独立工作的信息,可以从这里开始: