C++ ARC不允许对Objective-C指针进行隐式转换

C++ ARC不允许对Objective-C指针进行隐式转换,c++,objective-c,automatic-ref-counting,chipmunk,C++,Objective C,Automatic Ref Counting,Chipmunk,我正在处理这个问题,我遇到了以下代码的问题(在第5节中): 在最后一行ballShape->data=ball;我正在尝试将ballShape对象的数据属性与UIImageView对象ball链接。如果我关闭ARC处理,这可以正常工作,但使用ARC我无法做到这一点,出现错误: "Implicit conversion of an Objective-C pointer to 'cpDataPointer' (aka 'void *') is disallowed with ARC" 由于bal

我正在处理这个问题,我遇到了以下代码的问题(在第5节中):

在最后一行ballShape->data=ball;我正在尝试将ballShape对象的数据属性与UIImageView对象ball链接。如果我关闭ARC处理,这可以正常工作,但使用ARC我无法做到这一点,出现错误:

"Implicit conversion of an Objective-C pointer to 'cpDataPointer' (aka 'void *') is disallowed with ARC"
由于ballShape是一个指针,并且原始对象有一个数据属性,是否有任何方法可以将ball对象指定给该属性并使ARC满意?我正在尝试以下代码:

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

这会使错误消失,但这是解决此问题的正确方法吗?我看过苹果公司的ARC文档,但很多文档目前都在我的脑子里。如果这是一个非常基本的问题,请提前道歉,但是C中的“->”运算符让我感到困惑和愤怒

如果你只想存储指针,只要你保持对
球的引用,它就是正确的如果你只想存储指针,只要你保持对
球的引用,它就是正确的

如果你理解指针,这个问题的第一个答案也很好地解释了桥牌转换,C++ <代码> -> /COD>操作符不是什么花哨的东西。代码> Brace- > E < /> >等效于<代码>(*BultFrime:E.B/Calp>)。ARC是目标C——为什么这个标记为C++(或C)?这个问题的第一个答案解释了桥的浇注情况,如果你理解指针,C++ <代码> -> /Cord>运算符不是什么花哨的东西。代码> BoStule> E < /C> >等效于(*BultFrm).E./COD>。ARC是目标C——为什么这个标记为C++(或C)?
ballShape->data = (__bridge cpDataPointer)ball; // Associate with out ball's UIImageView