「Leaks」で出た、頭に「_NSZombie_」がついた「Leaks Object」の解消法

instruments」で「Leaks」を利用した時に、なぜか大量に頭に「NSZombie」がついたLeaks Objectが見つかったので、ここ数日とても困っていました。 しかし、本日ようやくこの「NSZombie」を解消することができました。

2013 2 9 ddss

解決方法

これは普通にcocos2dを利用している人にはまず出て来ません。 main.mでこの記述をしていると出てくるみたいです。 [c] extern void _CFEnableZombies(void);//<===こいつです

int main(int argc, char *argv[]) {

_CFEnableZombies(); //  <===こいつです


NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
/*
 int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
 [pool release];
 return retVal;
 */


int retVal = -1;
@try {
    retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
}
@catch (NSException *exception) {
    NSLog(@"%@", [exception callStackSymbols]); 
    @throw exception; 
}
@finally {
    [pool release];
}
return retVal;

} [/c]

おそらくこのサイトを見て記述をして、そのままにしておいたのが原因だったみたいです。

「main.m」から「extern void CFEnableZombies(void);」CFEnableZombies(); 」を削除しましよう。

さいごに

私のメモリーの問題は、これ以外ににもたくさんあり、できるかぎりメモリを抑えようと色々調べています。 アプリが完成する前に、大きな山ですね。