Objective-C,来自executableArchitectures的NSArray

时间:2012-07-09 20:41:47

标签: objective-c nsbundle

我正在尝试从我的应用程序中确定另一个文件的体系结构。我正在使用我的应用程序包并将其与我的示例中的不同包进行比较。方法已经到位,它们确实将值返回给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包。当我阅读executableArchitecture上的文档时,它显示了一些截然不同的内容:

Mach-O Architecture

这些常量描述了bundle的可执行代码可能支持的CPU类型。

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

1 个答案:

答案 0 :(得分:2)

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

我将留下7和0x7作为读者的练习。

你知道Christmas (Dec 25) and Halloween (Oct 31) are actually on the same day吗?