在ARC中不允许对Objective-C指针进行隐式转换
Implicit conversion of an Objective-C pointer is disallowed with ARC
我正在玩这个花栗鼠教程,我遇到了以下代码的问题(在第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对象ball链接起来。如果我关闭ARC处理,这工作得很好,但使用ARC我不能这样做,得到错误:
"Implicit conversion of an Objective-C pointer to 'cpDataPointer' (aka 'void *') is disallowed with ARC"
因为ballShape是一个指针,和原始对象有一个数据属性,有没有任何方法我可以分配球对象的属性,使ARC高兴?我正在尝试以下代码:
ballShape->data = (__bridge cpDataPointer)ball; // Associate with out ball's UIImageView
这使错误消失,但这是解决这个问题的正确方法吗?我看过苹果的ARC文档,但其中很多内容目前我还不太明白。如果这是一个非常基本的问题,那么提前道歉,但是C中的"->"操作符让我感到困惑和愤怒。:)
如果你只是想存储指针,它是正确的,只要你保持你的ball
的引用
相关文章:
- 转换指针引用的字符串
- 无法向上转换指针到指针参数
- 混合转换指针和引用
- 堆栈对象的强制转换指针
- 基类到派生模板类的强制转换指针,而不知道类型
- 删除类型转换指针的最佳方法
- 管理到本机值类转换:强制转换指针是否安全?
- 转换指针类型
- 为什么函数不能正确强制转换指针(从基类到派生类)
- 当我们递增下面的类型转换指针时会发生什么?
- 类型强制转换指针构造函数调用
- 如何转换(指针向量)-->(指向指针数组的指针)
- 如何从类功能转换指针
- 在C++对象中:我应该使用父类强制转换指针,还是应该使用实际类本身进行强制转换
- Delphi中的类型转换指针添加
- C++分段错误(核心转储)错误 - 强制转换指针/将函数值返回到线程
- 以C++和运算符优先级键入指向数组成员的强制转换指针
- C++动态强制转换指针的内存清理
- 转换指针和引用的好处
- 在c++中转换指针