2011-12-29 3 views
2

으로 허용되지 않습니다 나는이 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 

이로 인해 오류가 사라지나요?이 문제가 해결 되었습니까? 필자는 애플의 ARC 문서를 살펴 봤지만 그 중 많은 부분이 지금 당장 내 머리 위로 쓰이고있다. 미안하지만 만약 이것이 기본적인 질문이라면 C에서 "->"연산자가 혼란스럽고 분노를 느낍니다. :)

+0

'볼'의 유형은 무엇입니까? – oltman

+0

이 질문에 대한 첫 번째 대답은 브리지 캐스팅을 잘 설명합니다. http://stackoverflow.com/questions/6725558/cast-of-objective-c-pointer-type-nsstring-to-c-pointer-type-cfstringref-a – oltman

+0

또한, 포인터를 이해한다면, C++'->'연산자는별로 환상적이지 않습니다. 'ballShape-> e'는'(* ballShape) .e'와 같습니다. – oltman

답변

0

포인터를 저장하려는 경우 ball에 대한 참조를 유지하는 한 올바른 것입니다.