で禁止されている私はこのChipmunk Tutorialで遊んでいると私は(セクション5)次のコードで問題に実行している:で暗黙の変換は、ARC
// 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オブジェクトのデータプロパティをUIImageViewオブジェクトボールとリンクしようとしています。私はこれが正常に動作しますが、ARCで、私はこれを行うことはできません処理するARCをオフにした場合、エラーになっ:ballShapeはポインタで、元のオブジェクトは、データの性質を持っているので
"Implicit conversion of an Objective-C pointer to 'cpDataPointer' (aka 'void *') is disallowed with ARC"
することは、どのような方法がありますボールオブジェクトをそのプロパティに割り当てて、ARCを幸せにすることができますか?私は次のコードを試しています:
ballShape->data = (__bridge cpDataPointer)ball; // Associate with out ball's UIImageView
これは、この問題のための正しい修正ですか?私はAppleのARCのドキュメントを見てきましたが、その多くは現時点では私の頭の中にあります。申し訳ありませんが、これはかなり基本的な質問ですが、Cの " - >"演算子が私を混乱させ、怒らせます。 :)
「ボール」の種類は? – oltman
この質問の最初の答えは、かなり良いブリッジキャスティングについて説明しています。http://stackoverflow.com/questions/6725558/cast-of-objective-c-pointer-type-nsstring-to-c-pointer-type-cfstringref-a – oltman
また、ポインタを理解していれば、C++の ' - >'演算子は素晴らしいものではありません。 'ballShape-> e'は'(* ballShape).e'と等価です。 – oltman