我真诚地试图从我在这里看到的任何远程相关问题中理解错误。但是,我遇到的问题是,当我尝试从 level1 场景转换到 levelselector 场景时,游戏会因错误的访问异常而崩溃。当我在主菜单、积分、关卡选择器等中使用它们时,菜单和过渡效果完美无缺。现在我知道错误在主线程上。选择器显示它位于
int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
现在在我的 level1 场景中,我确实有三个线程使用 [self schedule],并且我已经放入了相应的 [self unschedule];
我也有一个 NSMutableArray 我尝试释放并指向 nil 但我得到另一个错误。我把它放在场景的dealloc方法中。我也对 [self unschedule] 做了同样的事情。有更好的地方放吗?
这是它的样子,忘记保留东西了。release 现在工作正常,但在转换后仍然崩溃。场景加载就像我看到的那样,但它立即崩溃了。
[enemies release];
[player release];
[accel release];
[pausedLabel release];
[pausedLayer release];
[health release];
[score release];
enemies = nil;
player = nil;
accel = nil;
pausedLabel = nil;
pausedLayer = nil;
health = nil;
score = nil;
[self unschedule:@selector(updateGameLogic)];
[self unschedule:@selector(throwEnemey)];
[self unschedule:@selector(enemyShoot)];
[super dealloc];
这次我对上面的每个对象都使用了 [[Class init] alloc] retain]