Mezclar C ++ y Objective-C

Estoy usando C ++ como la red troncal de la aplicación y Objective-C para la GUI, está bien.

Pero cuando se trata de mezclar esos códigos en Objective-C ++ (archivo .mm), tengo algunas preguntas:

1. ¿Puedo mezclar contenedores STL con objetos Objective-C o Cocos2D?

P.ej. En el encabezado Objective-C, ¿puedo hacer lo siguiente?

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

Y luego en el.mm archivo, quiero hacer

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

¿Es válido el código anterior? Ciertamente está en C ++, pero no estoy seguro al mezclar C ++ y Objective-C y Cocos2D.

2. Gestión de memoria utilizando el objeto puntero inteligente C ++ en Objective-C?

Cuando intento usar el código C ++ en Objective-C, quiero declarar un objeto C ++ como una variable miembro en el archivo de encabezado Objective-C.

Di que tengo una clase de C ++ declarada en eltest.h encabezado:

Test{
};

En el archivo de encabezado Objective-C, quiero hacer

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

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

En el código anterior, ¿está bien (2)? ¿Puedo usar punteros inteligentes en Objective-C como en el código C ++? ¿Y puedo asumir laTest clase destructor se llamará cuando elMyClass objeto destruido?

O si (2) no está bien en Objective-C ++, ¿está (1) bien? ¿Necesitaría llamar manualmente adelete m_testObjectPtr indealloc?

Respuestas a la pregunta(2)

Su respuesta a la pregunta