GameCenter提交分数但在iOS中返回错误

时间:2012-09-01 12:36:44

标签: ios game-center

我已经按照http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-game-center-achievements-and-leaderboards-part-1/上的教程进行了操作,并设法让一切正常。事情就是当我提交分数时,一直说“缺失方法”。我该如何解决这个问题?感谢..

- (void) callDelegate: (SEL) selector withArg: (id) arg error: (NSError*) err
{
    assert([NSThread isMainThread]);
    if([delegate respondsToSelector: selector])
    {
        if(arg != NULL)
        {
            [delegate performSelector: selector withObject: arg withObject: err];
        }
        else
        {
            [delegate performSelector: selector withObject: err];
        }
    }
    else
    {
        NSLog(@"Missed Method");
    }
}

PS:code

1 个答案:

答案 0 :(得分:0)

什么是选择器以及委托是什么?

如果打印“Missed Method”,则表示选择器正在描述的方法未在委托对象上实现。

也许您传递的是错误的选择器,或者代理对象未设置或未完全实现?

根据以下评论进行修改: 看来你没有在MainViewControllerClass上实现GameCenterManagerDelegate协议的可选方法,而它被设置为GameCenterManager的委托。这没关系,但是如果你想摆脱“Missing method”日志消息,你应该确保你的MainViewControllerClass实现整个协议:

@protocol GameCenterManagerDelegate <NSObject>
@optional
- (void) processGameCenterAuth: (NSError*) error;
- (void) scoreReported: (NSError*) error;
- (void) reloadScoresComplete: (GKLeaderboard*) leaderBoard error: (NSError*) error;
- (void) achievementSubmitted: (GKAchievement*) ach error:(NSError*) error;
- (void) achievementResetResult: (NSError*) error;
- (void) mappedPlayerIDToPlayer: (GKPlayer*) player error: (NSError*) error;
@end

对于您描述的情况,它是“ - (void)scoreReported:(NSError *)错误;”那是缺失的。 GameCenterManager提交所有分数,一旦完成,它会尝试在其委托上调用scoreReported回调。然后注意到该方法在其委托中不存在并打印出“缺失方法”。 如果您在报告分数后不想做任何事情,您可以保持原样。