objective-c - 如何使用 ARC 删除 Objective C 中的 C++ 指针

标签 objective-c interop objective-c++

我正在包装 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/

相关文章:

iphone - 如何在 iOS 中创建一个小弹出窗口?

ios - 如何将 UILabel 文本颜色更改回程序首次在 Xcode for iOS 7 中启动时的颜色?

ios - __NSCFString objectForKeyedSubscript : exception

javascript - IOS:如何检测用户在内容可编辑的 div 中更改 UIWebView 上的文本

objective-c++ - 如何使用 FourSquare Api 获取 field 列表

python - 使用 Python 与其他程序交互

c++ - 我的 VAO 不工作,我如何用 Cuda 改变它?

asp.net - 中等信任度的 LDAP

objective-c - ARC/ObjC++ : ObjC objects as C++ member variable

ios - Xcode std::__1::basic_ostream undefined symbol