1

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:コード

4

1 に答える 1

0

セレクターとデリゲートとは何ですか?

「Missed Method」が出力された場合、セレクターが記述しているメソッドがデリゲート オブジェクトに実装されていないことを意味します。

間違ったセレクターを渡しているか、デリゲート オブジェクトが設定されていないか、完全に実装されていない可能性があります。

以下のコメントに基づいて編集: GameCenterManager のデリゲートとして設定されている間、MainViewControllerClass に GameCenterManagerDelegate プロトコルのオプションのメソッドを実装していないようです。これは問題ありませんが、「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*) error;」です。それがありません。GameCenterManager はすべてのスコアを送信し、送信が完了すると、そのデリゲートで scoreReported コールバックを呼び出そうとします。次に、デリゲートにメソッドが存在しないことに気付き、"Missing Method" を出力します。スコアが報告された後に何もしたくない場合は、そのままにしておくことができます。

于 2012-09-01T12:42:09.107 に答える