Cocos2d iphone CCScheduler在消息发送到解除分配的实例时崩溃

Cocos2d iphone CCScheduler在消息发送到解除分配的实例时崩溃,cocos2d-iphone,crash,Cocos2d Iphone,Crash,这听起来像是一个noob问题,因为它是。我已经试了好几天想弄清楚我在做什么使它崩溃,但我弄不清楚 我有各种使用CCActions的对象。当需要从屏幕上删除对象时,我调用[spriteObject StopalActions];然后我释放这些动作。(我保留init中的操作,因为我试图避免这种崩溃) 程序在CCScheduler中的这一行随机崩溃: [elt->currentTimer release]; 错误消息是我正在向解除分配的实例发送消息。但我不知道什么时候会被释放。我保留我创造的所

这听起来像是一个noob问题,因为它是。我已经试了好几天想弄清楚我在做什么使它崩溃,但我弄不清楚

我有各种使用CCActions的对象。当需要从屏幕上删除对象时,我调用[spriteObject StopalActions];然后我释放这些动作。(我保留init中的操作,因为我试图避免这种崩溃)

程序在CCScheduler中的这一行随机崩溃:

[elt->currentTimer release];
错误消息是我正在向解除分配的实例发送消息。但我不知道什么时候会被释放。我保留我创造的所有动作。我甚至试着在没有发布动作的情况下运行程序,看看这是否是原因,但它仍然崩溃

有时20分钟后崩溃,有时2分钟后崩溃。这是相当随机的。 我不知道该放什么,因为代码非常分散

基本上,我有一个Sprite,它包含一个“Strategy”对象,其中包含正在运行的CCAction。在运行时,我创建一个“策略”,并将其传递给保留该策略的精灵

精灵在程序执行结束之前不会解除分配


有没有关于我如何知道交易的内容、地点和原因的想法?我真的搞不懂。不确定在这里放什么信息:C

Cocos2d当前不是线程安全的,并且不希望从其他线程调用api。

请发布更多代码以查找错误。但显然,在调用
release
之前,计时器已经释放。您可以检查retain count以确定这是否是问题所在。似乎cocos2d不应该是线程安全的,因此不应该从多个线程访问api。我想我需要进行设计更改。不要保留操作,也不要手动释放它们。发送停止动作就足够了。如果运行操作的节点从节点层次结构中删除,则根本不需要手动停止/删除操作。