-1

たまに、次のNSInvalidArgumentExceptionクラッシュを伴う、アプリのクラッシュレポート(crittercismを介して)を受け取ります。

+[GKAchievement reportAchievements:withCompletionHandler:]: unrecognized selector sent to class 0x3f940a84

コードは次のようになります。

NSMutableArray *achivementArray = [NSMutableArray arrayWithCapacity:20];

for (NSString *achievementID in achievementsToUpload) // achievementsToUpload is a NSSet
{
    GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier:achievementID];
    if (achievement)
    {
        ...

        [achivementArray addObject:achievement];
    }
}

[GKAchievement reportAchievements:achivementArray withCompletionHandler:^(NSError *error)
{
    if (error != nil)
    {
        NSLog(@"Error sending achievement: %@", error.localizedDescription);
    }
}];

エラーが実際にreportAchievements:withCompletionHandler:内にある場合、私が見る限り、エラーの原因は2つの場所から発生する可能性があります:1)achivementArrayがNSArrayではない、または2)エラーが実際にはNSErrorではない。

#1の場合、呼び出しの数行上に配列を作成します。#2の場合、OSが非NSErrorオブジェクトを送り返しているとは思えません。

何か案は?

4

1 に答える 1

0

ヘッダーは次のようになります。

+ (void)reportAchievements:(NSArray *)achievements withCompletionHandler:(void(^)(NSError *error))completionHandler __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_6_0);

したがって、問題は使用しているベースSDKにある可能性があります。この方法は、iOS6.0以降で使用できます。

お役に立てば幸いです

于 2013-02-26T12:03:57.467 に答える