繁体   English   中英

如何在内存中保留C ++对象?

[英]How do I retain a C++ object in Memory?

Objective-C类中C ++对象的对象生命周期是什么,以及如何将其保存在内存中?

我尝试了不透明的结构,创建实例,但总是导致null。

您可以在Objective-C类中拥有一个C ++对象,方法是在init方法中创建一个new的C ++类实例,将其分配给ivar,然后在-dealloc ,在ivar上调用delete

@interface SomeClass : NSObject {
  SomeCPPClass *cpp_object;
}
@end

@implementation SomeClass 

- (id) init {
   self = [super init];
   if(self) {
      cpp_object = new SomeCPPClass();
   }
   return self;
}

- (void) dealloc {
  delete cpp_object;
  [super dealloc];
}

@end    

如果你的C ++对象与包含它的Objective-C对象具有相同的生命周期,你可以简单地将C ++对象(不是它的指针)放在Objective-C类中:

@interface MyClass {
    CppObject myObject;
}
@end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM