我正在包装 box2d 库,并且我想在包装器释放时正确释放 b2World 指针。我的问题是,我应该重写 Objective C 中的 -dealloc 方法,还是 ARC 自动释放 c++ *world 指针?
#import "World.h"
#import "Box2D.h"
@interface World()
@property b2World* world;
@end
@implementation World
@synthesize world;
-(void) createWorld:(Vec2*) gravity{
b2Vec2 g(gravity.x, gravity.y);
world = new b2World(g);
}
-(void) dealloc{
delete world;
world = nil;
NSString *temp = @"World DEALLOCATED!!";
NSLog(@"%@", temp);
}
我是否正确实现了 -(void) dealloc 或者没有必要这样做?
最佳答案
ARC 不会自动计算 C++ 指针上的引用。您确实正确实现了 dealloc
,但您可能需要在调用 delete
之前进行检查以确保 world
不是 0
> 就它了。
关于objective-c - 如何使用 ARC 删除 Objective C 中的 C++ 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28507721/