糟糕的接入挑战

时间:2012-10-13 18:44:45

标签: objective-c ios xcode game-center challenge-response

当用户的朋友挑战他的高分,并且用户击败它时,它会回复一个新的挑战(通过苹果,未编程)。另一个用户接受了挑战,但是如果([_delegate respondsToSelector:@selector(onScoresSubmitted :)])来自本教程http://www.raywenderlich.com/23189/whats-new-with-game-center-in-ios-6

,发送者的游戏会立即在此行上与Bad Access崩溃

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您确定此时_delegate不是随机垃圾值吗?

if ([_delegate respondsToSelector:@selector(onScoresSubmitted:)])

确保使用callBack的客户端(委托人)清理服务器委托,以便不再执行callBack。

这可以通过两种方式完成:

  1. A:从服务器端向代表保留(但不是 委托关系了。)。
  2. B:委托客户端时,指定nil委托指针 不再需要这项服务了。
  3. 这是一个常见的错误,因为执行不好:

    ADelegateClient* client = [ADelegateClient new];
    [SingletonService service].delegate = (id<SingletonServiceDelegate>)client;
    [client release];
    // you must [SingletonService service].delegate = nil; Since
    // [SingletonService service] cannot know the delegate is not pointing to something valid anymore
    [[SingletonService service] makeStuffWillCauseCallBackToDelegate];
    

    我没有读过Ray代码,如果你的问题与此类似,那么我会深入了解。但我99%肯定它与解除分配的指针问题有关;