ARC不允许隐式转换Objective-C指针

时间:2011-12-29 02:23:07

标签: c++ objective-c automatic-ref-counting chipmunk

我正在玩这个Chipmunk Tutorial,我遇到了以下代码的问题(第5部分):

// Create our shape associated with the ball's body    
cpShape *ballShape = cpCircleShapeNew(ballBody, 20.0, cpvzero);  
ballShape->e = 0.5; // Elasticity  
ballShape->u = 0.8; // Friction  
ballShape->data = ball; // Associate with out ball's UIImageView  

在最后一行ballShape-> data = ball;我正在尝试将ballShape对象的data属性与UIImageView对象球链接起来。如果我关闭ARC处理,这工作正常,但使用ARC我不能这样做,得到错误:

"Implicit conversion of an Objective-C pointer to 'cpDataPointer' (aka 'void *') is disallowed with ARC"

由于ballShape是一个指针,原始对象有一个data属性,有什么办法可以将球对象分配给该属性并使ARC快乐?我正在尝试以下代码:

ballShape->data = (__bridge cpDataPointer)ball; // Associate with out ball's UIImageView  

这会使错误消失,但这是解决此问题的正确方法吗?我看过Apple的ARC文档,但很多内容现在已经超出了我的想象。如果这是一个非常基本的问题,请提前抱歉,但是“ - >” C中的操作员混淆并激怒了我。 :)

1 个答案:

答案 0 :(得分:0)

如果您只想存储指针,只要您保留对ball的引用,它就是正确的。