Как мне сохранить объект C ++ в памяти? - PullRequest
4 голосов
/ 24 февраля 2011

Каков жизненный цикл объекта C ++ в классе Objective-C и как вы храните его в памяти?

Я пробовал непрозрачную структуру, создать экземпляр, но это всегда приводит к нулю.

Ответы [ 2 ]

6 голосов
/ 24 февраля 2011

Вы можете владеть объектом C ++ в вашем классе Objective-C, создав new экземпляр вашего класса C ++ внутри вашего init метода, присвоив его ивару, затем в -dealloc, вызовя 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    
1 голос
/ 12 августа 2011

Если ваш объект C ++ будет иметь тот же жизненный цикл, что и объект Objective-C, который его содержит, вы можете просто поместить объект C ++ (не указатель на него) в класс Objective-C:

@interface MyClass {
    CppObject myObject;
}
@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...