0

アプリケーションから別のファイルのアーキテクチャを判別しようとしています。私は自分のアプリケーションバンドルを使用していて、それを私の例の別のバンドルと比較しています。メソッドは適切に配置されており、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のドキュメントを読むと、かなり異なることがわかります。

Mach-Oアーキテクチャ

これらの定数は、バンドルの実行可能コードがサポートする可能性のあるCPUタイプを表します。

enum {
   NSBundleExecutableArchitectureI386      = 0x00000007,
   NSBundleExecutableArchitecturePPC       = 0x00000012,
   NSBundleExecutableArchitectureX86_64    = 0x01000007,
   NSBundleExecutableArchitecturePPC64     = 0x01000012
};
4

1 に答える 1

2
NSLog(@"%u 0x%x", 0x01000007, 16777223);    // Prints 16777223 0x1000007
NSLog(@"0x%x %u", 18, 0x00000012);    // Prints 0x12 18

読者のための演習として、7と0x7を残しておきます。

そして、クリスマス(12月25日)とハロウィーン(10月31日)が実際には同じ日になっていることをご存知ですか?

于 2012-07-09T20:50:39.607 に答える