アプリケーションから別のファイルのアーキテクチャを判別しようとしています。私は自分のアプリケーションバンドルを使用していて、それを私の例の別のバンドルと比較しています。メソッドは適切に配置されており、NSLogに値を返しますが、期待していた値ではありません。戻り値を解釈する方法について誰かが理解できますか?
- (void)whatArch {
NSArray *x86_64_Arch = [[NSBundle mainBundle] executableArchitectures];
NSArray *i386_Arch = [[NSBundle bundleWithPath:@"/path/to/other/bundle"] executableArchitectures];
NSLog(@"%@ %@",[x86_64_Arch componentsJoinedByString:@" "], [i386_Arch componentsJoinedByString:@" "]);
}
私が得る出力は次のとおりです。
2012-07-09 00:00:59.990 whatArch[2200:403] 16777223 7 18
[16777223]は、x86_64バンドルの場合に返される値であり、[7 18]は(その他の)i386バンドルの場合に返される値です。executeArchitectureのドキュメントを読むと、かなり異なることがわかります。
これらの定数は、バンドルの実行可能コードがサポートする可能性のあるCPUタイプを表します。
enum {
NSBundleExecutableArchitectureI386 = 0x00000007,
NSBundleExecutableArchitecturePPC = 0x00000012,
NSBundleExecutableArchitectureX86_64 = 0x01000007,
NSBundleExecutableArchitecturePPC64 = 0x01000012
};