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?