Cocos2d iphone 切换场景时,我真的需要不定期地选择选择器吗?

Cocos2d iphone 切换场景时,我真的需要不定期地选择选择器吗?,cocos2d-iphone,Cocos2d Iphone,我只是偶然发现了一些答案:哪个国家 如何解决内存泄漏:[…] 如果从计划选择器外部切换场景,或者存在多个计划选择器 然后,您必须在切换之前取消计划 这是真的吗?我对此持怀疑态度,因为当一个场景被替换时,我会想象它被解除分配,而当这种情况发生时(对我来说),它将自动取消它所拥有的任何选择器的计划是合乎逻辑的更换场景时是否需要取消选择器计划? 我正在使用的是cocos2diphone1.0.1请看一下CCDirector.m中的replaceSecene:实现 您将看到它没有太多功能:它只是从数组中

我只是偶然发现了一些答案:哪个国家

如何解决内存泄漏:[…] 如果从计划选择器外部切换场景,或者存在多个计划选择器 然后,您必须在切换之前取消计划

这是真的吗?我对此持怀疑态度,因为当一个场景被替换时,我会想象它被解除分配,而当这种情况发生时(对我来说),它将自动取消它所拥有的任何选择器的计划是合乎逻辑的更换场景时是否需要取消选择器计划?


我正在使用的是
cocos2diphone1.0.1

请看一下
CCDirector.m
中的
replaceSecene:
实现

您将看到它没有太多功能:它只是从数组中删除您的
CCScene
,并将其替换为新的

如果一切正常,这将使场景重新分配。这将在
CCScene
CCNode
中调用
dealloc
CCScene
基类)。您还可以检查实现,并查看这些方法对计划的方法没有任何作用


因此,由您的
CCScene
类在dealloc(或onExit,任何对您有意义的)中执行任何所需的清理。

所以选择器必须手动取消计划?这很奇怪。当你在
NSNotificationCenter
注册一个观测者时也会发生同样的情况:你必须在dealloc中手动注销它…我认为规则是:每个人都要对自己的sh负责…:-)不,在场景中调用了cleanup,它会取消场景(节点)选择器的计划。如果被替换场景的预定选择器保持预定状态,则它要么崩溃(给定场景解除分配),要么导致非常奇怪的行为。这两种情况都不常见,只有在用户有一个保留周期,将被替换的场景保留在内存中,并且一些代码仍然在场景上运行时,才会重新安排选择器。这不是一个保证,但必须使用非计划选择器显然不符合我使用cocos2d的经验,甚至不符合v1.x或更低版本。它是否适用于你应该很容易通过运行你的应用程序的仪器进行验证。;)您不需要取消选择器的计划,除非选择器计划用于不属于节点图的对象(即直接通过CCScheduler计划的目标)。