페이지

2014년 6월 26일 목요일

Assert failed : reference count should greater than 0

개발환경 : 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(); //를 꼭 넣어줘야한다.

댓글 없음 :

댓글 쓰기