ARC 환경에서 Box2D를 사용하려고합니다. 다음은 objC 포인터를 __bridge
을 사용하여 비 -ObjC 공간에 전달하는 방법입니다. 하지만 sprite
var을 할당 취소 할 수 있기 때문에 합법적 인 것으로 보이지 않습니다. 내가 ObjC 공간에 비 ObjC에서 동일한 스프라이트가, 이번에는 __bridge _transfer
을 사용하여 해당 전송 방법Box2D 및 ARC에 대한 의문 사항
- (void)addBoxBodyForSprite:(CCSprite *)sprite
{
b2BodyDef spriteBodyDef;
...
spriteBodyDef.userData = (__bridge void*)sprite;
b2Body *spriteBody = _world->CreateBody(&spriteBodyDef);
...
spriteBody->CreateFixture(&spriteShapeDef);
}
이입니다.
-(void)update:(ccTime)dt
{
...
CCSprite *sprite = (__bridge_transfer CCSprite *)b->GetUserData();
...
}
나는 또한 할당 해제를 사용 DestroyBody(...)
내가 그 몸이 스프라이트보다 더 오래 살 수 있으리라 믿고있어 있기 때문에, 스프라이트 참조 특히 userData
을 삭제하지가 들어 몸을, 할당을 취소 할 수 있습니다.
위의 다리를 사용하는 것이 합법적인지 여부는 문제입니다.