私は自分のアプリケーションにAppleのゲームセンターを統合しようとしています。リーダーボードにスコアを投稿してリーダーボードを表示することはできますが、リーダーボードモーダルビューを却下しようとすると問題が発生します。私は、Game Kitプログラミングガイド([url] http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/GameKit_Guide/LeaderBoards/LeaderBoards.html [/ url])からAppleのコードの指示に従ってきました。 。ゲームセンターのために、次のようにGameKitモーダルビューを解除する
私のコードは次のとおりです。
-(BOOL)isGameCenterAvailable{
// Check for presence of GKLocalPlayer class.
BOOL localPlayerClassAvailable = (NSClassFromString(@"GKLocalPlayer")) != nil;
// The device must be running iOS 4.1 or later.
NSString *reqSysVer = @"4.1";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
BOOL osVersionSupported = ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending);
return (localPlayerClassAvailable && osVersionSupported);
}
- (void) authenticateLocalPlayer
{
if([self isGameCenterAvailable]){
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
[localPlayer authenticateWithCompletionHandler:^(NSError *error) {
if (localPlayer.isAuthenticated)
{
// Perform additional tasks for the authenticated player.
}
}];
}
}
- (void) reportScore: (int64_t) score forCategory: (NSString*) category
{
GKScore *scoreReporter = [[[GKScore alloc] initWithCategory:category] autorelease];
scoreReporter.value = score;
[scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
if (error != nil)
{
// handle the reporting error
}
}];
}
- (void) showLeaderboard
{
GKLeaderboardViewController *leaderboardController = [[GKLeaderboardViewController alloc] init];
if (leaderboardController != nil)
{
leaderboardController.leaderboardDelegate = self;
[self presentModalViewController: leaderboardController animated: YES];
}
//[leaderboardController release];
}
- (void)leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController
{
if([self modalViewController] != nil){
[self dismissModalViewControllerAnimated:YES];
}
}
-(IBAction)show{
[self showLeaderboard];
}
-(IBAction)submit{
[self reportScore:9 forCategory:kLeaderboardID];
}
Xcodeは、問題の行が[自己dismissModalViewControllerAnimated:YES]である私に語りました。それは私が悪いポインタをアクセスしようとしていることを意味する知っている悪いアクセスを取得していると言いますが、私は何かが無効ではない理由が表示されません。 modalviewcontrollerを持っていると自己報告します。私はあらゆる種類の変種を試しました。なぜ私にエラーが出るのか、私は完全に困惑しています。
何か助力や提案をいただければ幸いです。
ありがとうございます!