objective-c – iMac – 缺少x86版本的GameKit

如果我运行此命令:

file /System/Library/Frameworks/GameKit.framework/GameKit

我明白了:

/System/Library/Frameworks/GameKit.framework/GameKit:Mach-O 64位
动态链接共享库x86_64

这相当于我的iMac(一个全新的)缺少x86版本的GameKit.所以我的x86 Mac应用程序(它是一个C#Xamarin.Mac应用程序)在引用GameKit时崩溃了.

有谁知道这对未来的Mac来说是否会成为一个持续存在的问题?或者这是我的机器上缺少的Apple bug?

最佳答案 一切都指向苹果在某些时候弃用32位(架构i386)代码.这是因为他们利用从32位到64位代码的切换来为Objective-C运行时添加功能,使64位运行时功能更加强大.

我没有对此做出任何确认,但从PowerPC过渡的处理方式以及64位代码如何弃用大量古代技术来判断,这可能并不遥远.

虽然我的机器上确实有32位GameKit,但如果未来的OS X版本可能不包含32位代码,那就不会让我感到惊讶.而且由于所有包含GameKit的Mac都必须能够运行64位代码(Mountain Lion的要求),我能给出的最佳建议是添加64位版本的应用程序.我不知道MonoMac是否支持64位代码,但这是你应该去的方向.

我怀疑操作系统更新(例如即将发布的10.8.3)可能会安装一个恰好包含32位代码的GameKit版本.或者它可能会删除我们其他人的32位代码.但我绝对不会指望Apple维护或增加32位代码的新功能,正是因为所谓的32位Objective-C无法支持他们喜欢的许多功能(例如ARC或合成ivars)运行时不破坏二进制兼容性

点赞