개발환경 : Cocos2d-x2.0.4, XCode 5.1.1
void CCObject::retain()
{
CCASSERT(_referenceCount > 0, "reference count should greater than 0"); // 이 문제..
++_referenceCount;
}
IOS ( Objective-C ) 메모리 관리 부터
IOS 는 안드로이드(Java)와 같은 Garbage Collection 이 없다. (C와 동일 개념)
그래서 retain 과 release (이거나 autorelease)의 개념을 사용한다.
retain 은 해당 객체를 몇군데에서 사용하고 있는지 수치로 가지고 있는다. ( ++_referenceCount )
그리고 release 는 그 수치를 하나씩 삭제해준다.
물론 CCSprite 의 Create 메소드에선 autorelease 를 알아서 해주게 되어있지만. ( ex>>
CCSprite* sprite = CCSprite::spriteWithFile("test.png"); //등등 )
m_SpriteArray =
CCMutableArray<CCSprite*>::arrayWithObjects(a,b,c,NULL); // 이거와 같은 것에는
m_SpriteArray->retain(); // retain 을 꼭 해주고
Class::~Class() 같은 소멸자에
m_SpriteArray->release(); //를 꼭 넣어줘야한다.
댓글 없음 :
댓글 쓰기