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
?