我使用以下代码发布通知,但它会崩溃并显示EXC_BAD_ACCESS:
[[NSNotificationCenter defaultCenter]postNotificationName:AUTHENTICATED_NOTIFICATION object:nil];
在我的constants.h文件中:
#import <Foundation/Foundation.h>
extern NSString *const PLAYER_ID;
extern NSString *const RANDOM_NUMBER;
extern NSString *const AUTHENTICATED_NOTIFICATION;
extern NSString *const UNAUTHENTICATED_NOTIFICATION;
@interface RIYConstants : NSObject
{
}
@end
在我的constants.m文件中
#import "RIYConstants.h"
NSString *const PLAYER_ID = @"playerId";
NSString *const RANDOM_NUMBER = @"randomNumber";
NSString *const AUTHENTICATED_NOTIFICATION = @"AUTHENTICATED_NOTIFICATION";
NSString *const UNAUTHENTICATED_NOTIFICATION = @"UNAUTHENTICATED_NOTIFICATION";
@implementation RIYConstants
@end
当游戏中心进行身份验证时,会调用处理程序,导致程序崩溃的方法为:处理程序。
-(void)authenticatedPlayer:(GKLocalPlayer*)localPlayer
{
[[NSNotificationCenter defaultCenter]postNotificationName:AUTHENTICATED_NOTIFICATION object:nil];
......
}
我不知道为什么它会崩溃。通知发布时并非每次都会崩溃(似乎是随机的)。
编辑: 只有一个对象注册接收通知。下面是init方法和调用的选择器。我认为没有任何原因会导致崩溃。_label和_joinGame都是SKLabelNodes。
-(id)init
{ ...
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(addGameCenterOption) name:AUTHENTICATED_NOTIFICATION object:nil];
...
}
-(void)addGameCenterOption
{
_label.text = @"";
_joinGame.text = @"Start multiplayer game";
_signedIn = YES;
}
编辑:我已经更改了应用程序,使得没有对象注册来观察通知,但它仍然会(随机)崩溃。