Misturando C ++ e Objective-C
Estou usando C ++ como backbone do aplicativo e Objective-C para a GUI, tudo be
Mas quando se trata de misturar esses códigos no Objective-C ++ (arquivo .mm), tenho algumas perguntas:
1. Posso misturar contêineres STL com objetos Objective-C ou Cocos2D?Por exemplo. No cabeçalho Objective-C, posso fazer o seguinte?
#include <vector>
#include <boost\shared_ptr.hpp>
@interface MyClass : NSObject {
std::vector<boost::shared_ptr<CCSprite> > m_spriteList;
}
E depois no.mm
arquivo, eu quero fazer
CCSprite* newSprite = [/* cocos2d stuff here... */];
m_spriteList.push_back(newSprite);
O código acima é válido? Certamente está em C ++, mas não tenho certeza ao misturar C ++ e Objective-C e Cocos2
2. Gerenciamento de memória usando o objeto ponteiro inteligente C ++ no Objective-C?Quando tento usar o código C ++ no Objective-C, desejo declarar um objeto C ++ como uma variável de membro no arquivo de cabeçalho Objective-
Digo que tenho uma classe C ++ declarada notest.h
cabeçalho:
Test{
};
No arquivo de cabeçalho Objective-C, eu quero fazer
#include "test.h"
#incude <boost/scoped_ptr.hpp>
#include <vector>
@interface MyClass : NSObject {
Test* m_testObjectPtr; // (1)
boost::scoped_ptr<Test> m_testOjbSmartPtr; // (2)
}
No código acima, está (2) ok? Posso usar ponteiros inteligentes no Objective-C, como no código C ++? E posso assumir oTest
destruidor de classe será chamado quando oMyClass
objeto está destruído?
Ou se (2) não estiver correto no Objective-C ++, (1) está correto? Eu precisaria ligar manualmente paradelete m_testObjectPtr
dentrodealloc
?