Timer 启用Arc的Cocos2d:计划崩溃

Timer 启用Arc的Cocos2d:计划崩溃,timer,cocos2d-iphone,automatic-ref-counting,schedule,Timer,Cocos2d Iphone,Automatic Ref Counting,Schedule,通过遵循本教程,我最近成功地在我的项目上启用了ARC 在我添加一个计划方法之前,一切都正常,如: [self schedule:@selector(test:) interval:0.1]; 方法: -(void)test:(id)timer{ NSLog(@"yes!"); } 不幸的是,它没有说“是的!”,相反,它会崩溃: 0x1de8d83: movl (%eax), %edx 并显示: 我认为只使用以下命令就可以了: -(void)test:(id)timer;

通过遵循本教程,我最近成功地在我的项目上启用了ARC

在我添加一个计划方法之前,一切都正常,如:

[self schedule:@selector(test:) interval:0.1];
方法:

-(void)test:(id)timer{
    NSLog(@"yes!");
}
不幸的是,它没有说“是的!”,相反,它会崩溃:

0x1de8d83:  movl   (%eax), %edx
并显示:


我认为只使用以下命令就可以了:

-(void)test:(id)timer;
而是使用:

-(void)test:(ccTime)dt;

当ARC尚未启用时,没有出现此问题。

我认为可以使用:

-(void)test:(id)timer;
而是使用:

-(void)test:(ccTime)dt;

当ARC尚未启用时,没有出现此问题。

它以前不会工作(访问计时器会崩溃)。它可能只是没有崩溃,因为您没有访问计时器,但它肯定是不正确的。使用ARC时,id参数的内存由ARC管理,但由于它是一个浮点数,而不是ARC试图保留或释放它时的id,所以它会崩溃。它以前不会工作(访问计时器会崩溃)。它可能只是没有崩溃,因为您没有访问计时器,但它肯定是不正确的。使用ARC时,id参数的内存由ARC管理,但由于ARC试图保留或释放它时,它是一个浮点数而不是id,因此它将崩溃。