4

このコマンドを実行すると:

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

私は得る:

/System/Library/Frameworks/GameKit.framework/GameKit: Mach-O 64-bit dynamically linked shared library x86_64

これは私のiMac(真新しいもの)に相当し、GameKitのx86バージョンがありません。そのため、GameKitを参照すると、x86 Macアプリケーション(C#Xamarin.Macアプリ)がクラッシュします。

これが将来のMacで継続的な問題になるかどうか誰かが知っていますか?それとも、これが私のマシンにないのはAppleのバグですか?

4

1 に答える 1

2

すべてが、ある時点で Apple が 32 ビット (アーキテクチャ i386) コードを廃止することを示しています。これは、32 ビット コードから 64 ビット コードへの切り替えを利用して、Objective-C ランタイムに機能を追加し、64 ビット ランタイムをより機能的にしたためです。

これについては確証はありませんが、PowerPC への移行がどのように処理されたか、および 64 ビット コードが大量の古いテクノロジを非推奨にする方法から判断すると、そう遠くない可能性があります。

私のマシンには 32 ビットの GameKit がありますが、OS X の将来のリリースに 32 ビット コードが含まれていなくてもまったく驚かないでしょう。また、GameKit を含むすべての Mac は 64 ビット コードを実行できる必要があるため (Mountain Lion の要件)、64 ビット バージョンのアプリを追加することをお勧めします。MonoMac が 64 ビット コードをサポートしているかどうかはわかりませんが、それが進むべき方向です。

OS の更新 (今後の 10.8.3 など) によって、たまたま 32 ビット コードを含むバージョンの GameKit がインストールされるのではないかと思います。または、残りの 32 ビット コードを削除することもできます。しかし、Apple が 32 ビット コードに新しい機能を維持または追加することは絶対に期待できません。正確には、彼らが好む多くの機能 (ARC や ivar の合成など)が、いわゆる 32 ビット Objective-C ではサポートできないためです。バイナリ互換性を損なうことなく実行できます。

于 2012-12-19T15:46:50.630 に答える