-1

每个人都会偶尔收到我的应用程序(通过 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 对象。

有任何想法吗?

4

1 回答 1

0

标题看起来像:

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

所以问题可能出在您正在使用的基础 sdk 中。此方法从 iOS 6.0 开始可用。

希望它会有所帮助

于 2013-02-26T12:03:57.467 回答