0

当用户的朋友挑战他的高分并且用户击败它时,它会回复一个新的挑战(来自苹果,未编程)。另一个用户收到了挑战,但发件人的游戏立即崩溃,此行出现错误访问 if ([_delegate respondsToSelector:@selector(onScoresSubmitted:)]) 来自本教程http://www.raywenderlich.com/23189/whats- ios-6 中的新游戏中心

有任何想法吗?

4

1 回答 1

0

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

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

确保使用 callBack 的客户端(委托)清理服务器委托,以便不再完成回调。

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

  1. A:从服务器端保留委托(但它不再是委托关系)。
  2. B:当委托客户端不再需要服务时,将委托指针赋值为零。

这是一个常见的错误,因为实施不当:

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% 确定它与释放指针问题有关;

于 2012-10-14T12:32:24.087 回答