たまに、次の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オブジェクトを送り返しているとは思えません。
何か案は?