Неявное преобразование указателя Objective C запрещено с ARC - PullRequest
2 голосов
/ 29 декабря 2011

Я играю с этим Обучающим пособием по бурундуку и сталкиваюсь с проблемой следующего кода (в разделе 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  

В последней строке-> данные = мяч;Я пытаюсь связать свойство data объекта ballShape с шариком объекта UIImageView.Если я отключаю обработку 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  

Это делает ошибку исчезает, но это правильное решение для этой проблемы?Я просмотрел документацию Apple по ARC, но в данный момент многое из этого у меня над головой.Извините заранее, если это довольно простой вопрос, но оператор "->" в C смущает и злит меня.:)

1 Ответ

0 голосов
/ 29 декабря 2011

Если вы просто хотите сохранить указатель, это правильно, если вы сохраняете ссылку на ваш ball.

...