Смешивание C ++ и Objective-C

Я использую C ++ в качестве основы приложения и Objective-C для графического интерфейса, это нормально.

Но когда дело доходит до смешивания этого кода в Objective-C ++ (файл .mm), у меня возникает несколько вопросов:

1. Могу ли я смешивать контейнеры STL с объектами Objective-C или Cocos2D?

Например. В заголовке Objective C я могу сделать следующее?

#include <vector>
#include <boost\shared_ptr.hpp>
@interface MyClass : NSObject {
  std::vector<boost::shared_ptr<CCSprite> > m_spriteList;
}

А потом в.mm файл, я хочу сделать

CCSprite* newSprite = [/* cocos2d stuff here... */];
m_spriteList.push_back(newSprite);

Действителен ли приведенный выше код? Это, конечно, в C ++, но я не уверен, когда смешиваю C ++ и Objective-C и Cocos2D.

2. Управление памятью с использованием C ++ объекта смарт-указателя в Objective-C?

Когда я пытаюсь использовать код C ++ в Objective-C, я хочу объявить объект C ++ как переменную-член в заголовочном файле Objective-C.

Скажем, у меня есть класс C ++, объявленный вtest.h заголовок:

Test{
};

В заголовочном файле Objective-C я хочу сделать

#include "test.h"
#incude <boost/scoped_ptr.hpp>

#include <vector>
@interface MyClass : NSObject {
   Test* m_testObjectPtr; // (1)
   boost::scoped_ptr<Test>  m_testOjbSmartPtr; // (2)
}

В приведенном выше коде, (2) хорошо? Могу ли я использовать умные указатели в Objective-C так же, как в коде C ++? И могу ли я взять на себяTest деструктор класса будет вызван, когдаMyClass объект уничтожен?

Или, если (2) не в порядке в Objective-C ++, (1) нормально? Нужно ли мне вручную звонитьdelete m_testObjectPtr вdealloc?

Ответы на вопрос(2)

Ваш ответ на вопрос