在cocos2d-x中创建一个类初始化时候创建其变量CCArray,添加2个CCArray作为内容。
if (!alliesOfTeams || alliesOfTeams->count() <= 0) {
alliesOfTeams = CCArray::create(CCArray::create(),CCArray::create(),NULL);
CCLOG("allies of teams count = %d",alliesOfTeams->count());
}
然后当其他地方调用这个alliesOfTeams->count()时候报错了。
后来发现,CCArray跟Objectiv-c中的NSArray是类似的,但objc有自动释放机制,也就是引用情况会自动retain,但cocos2dx是没有这样的机制的。我们需要创建时候retain一下,保证方法返回时候没有被释放掉
if (!alliesOfTeams || alliesOfTeams->count() <= 0) {
alliesOfTeams = CCArray::create(CCArray::create(),CCArray::create(),NULL);
alliesOfTeams->retain();
CCLOG("allies of teams count = %d",alliesOfTeams->count());
}