Objective c 弧形和cocos2d桥接铸造
我正在通过一些书学习CoCo2D,即Pablo Ruiz的书,这里有一些代码:Objective c 弧形和cocos2d桥接铸造,objective-c,ios,cocos2d-iphone,automatic-ref-counting,Objective C,Ios,Cocos2d Iphone,Automatic Ref Counting,我正在通过一些书学习CoCo2D,即Pablo Ruiz的书,这里有一些代码: [next runAction:[CCSequence actions:[CCDelayTime actionWithDuration:2], [CCFadeIn actionWithDuration:1], [CCDelayTime actionWithDuration:2], [CCCallFuncND actionWithTarget:self
[next runAction:[CCSequence actions:[CCDelayTime
actionWithDuration:2],
[CCFadeIn actionWithDuration:1],
[CCDelayTime actionWithDuration:2],
[CCCallFuncND actionWithTarget:self selector:@selector(cFadeAndShow:data:)
data:images],nil]];
- (void) cFadeAndShow: (id)sender data:(void*) data
{
NSMutableArray *images = data;
[self fadeAndShow:images];
}
它给了我一个在数据上显示的错误:运行中的图像:
Implicit conversion of Objective-C pointer type 'NSMutableArray *' to C pointer type 'void *' requires a bridged cast
我试着把它修好,但没有用。我该怎么办?我尝试将void*更改为NSMutableArray,但仍然没有帮助。我怎么投桥牌?我尝试使用了
\u桥接
,但它说您不能桥接强制转换NSMutableArray。尝试替换此调用:
[CCCallFuncND actionWithTarget:self selector:@selector(cFadeAndShow:data:) data:images],nil]];
为此:
[CCCallFuncND actionWithTarget:self selector:@selector(cFadeAndShow:data:) data:(__bridge void*)images],nil]];
然后在fade and show方法中,将其转换回id:
NSMutableArray *images = (__bridge id) data;
考虑使用ccCalBand,这本身就是不安全的!如果在序列运行时取消分配映像,则会崩溃。如果在调用func选择器运行之前停止序列,并且您使用桥接传输/保留来防止崩溃,则images对象将泄漏。CCCallBlock是在ARC下执行函数的安全方法。