每个人都会偶尔收到我的应用程序(通过 crittercism)的崩溃报告,其中包含以下 NSInvalidArgumentException 崩溃:
+[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: 中,据我所知,错误的来源可能来自两个地方:1) achievementArray 不是 NSArray 或 2) 错误不是真正的 NSError。
在 #1 的情况下,我在调用上方几行创建了数组,在 #2 的情况下,我怀疑操作系统是否正在发回一个非 NSError 对象。
有任何想法吗?