我在随机位置获得EXC_BAD_ACCESS。已经尝试使用NSZombieEnabled = YES但没有任何不同的事情发生。 我正在尝试使用xcode 4.已经尝试过:启用Scribble,启用Guard Edge,启用Guard Malloc(仅适用于模拟器,非常慢!),内存记录等... 没有运气。
任何人都可以建议我尝试寻找缺陷的另一种方法吗?我的选择已经用完了。
先谢谢,
内部:(void)applicationDidFinishLaunching:(UIApplication *)应用程序
我创建了一个Timer:ASMInterrupt = [NSTimer scheduledTimerWithTimeInterval:1 / 60.0 target:self selector:@selector(interrupiSSao :) userInfo:nil repeats:YES];
一个新线程:[NSThread detachNewThreadSelector:@selector(myBackgroundMethod :) toTarget:self withObject:nil];
在myBackgroundMethod运行之前,计时器将处于循环中。
在myBackgroundMethod中我使用:
//Beginning of the function
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
EAGLContext *context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES1 sharegroup: [[glView context] sharegroup]];
[EAGLContext setCurrentContext:context];
... //几个纹理/声音/音乐加载,如下所示:
NSBundle *bundle = [NSBundle mainBundle];
sndMove = [[SoundFx alloc] initWithSound:[bundle pathForResource:@"tetMov" ofType:@"wav"]];
txParallax[0] = [[Texture2D alloc] initWithImageFile:@"parallax_tst" ofType : @"png" inMode:TEX_RGBA];
NSString * tmpSom = [[NSBundle mainBundle] pathForResource:@“ThorTitle”ofType:@“mp3”]; musMenu = [[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:tmpSom] error:NULL] retain];
...
//and at the end:
[EAGLContext setCurrentContext:nil];
[context release];
[pool release];
这仅发生在应用程序的开头。并且错误总是发生在: 1)长时间比赛 2)游戏结束后和新游戏 3)游戏结束序列
因此,它可能与该线程没有直接关系。我试图寻找自动释放问题,但所有内容都是用 initWith
分配的答案 0 :(得分:1)
尝试使用静态分析器(Xcode 4中的Cmd-Shift-B,Xcode 3中的Cmd-Shift-A)。如果您有一个过度释放的对象或双重免费,它将报告它。
答案 1 :(得分:0)
将仪器中的记忆分配仪器放入。当你崩溃时,你应该能够看到该地址的历史分配和免费事件,包括objective-c引用计数事件。
答案 2 :(得分:0)
显然我正在从它的边界访问一个数组:
int xpto [10] [10];
xpto [10] [5] = 2; ... if(xpto [-1] [8]!= ...
调试器给我一些更好的信息是多么困难。 这就是为什么我迫不及待想要拿到诺基亚WinMo 7手机的原因。 Visual Studio !!!