Objective-C,以编程方式检测二进制的i386或x86_x64体系结构?

Objective-C,以编程方式检测二进制的i386或x86_x64体系结构?,objective-c,binary,x86-64,Objective C,Binary,X86 64,是否有一种方法可以通过编程方式检测/确定二进制文件(与我的应用程序分离)是否已编译为i386、x86_x64或两者?我想象有一种方法(显然),尽管我真的不知道如何。如果您有任何建议,我们将不胜感激,谢谢 编辑:我在Apple开发者网站上找到了一个例子,尽管它是用C语言编写的,并且设置为更多地用作命令行工具。如果有人知道如何将它实现到我的objective-c代码中,那将非常有帮助 示例[C]代码: 您可以包括mach-o标头,只需加载二进制文件,然后检查mach\u标头。你应该阅读苹果公司的M

是否有一种方法可以通过编程方式检测/确定二进制文件(与我的应用程序分离)是否已编译为i386、x86_x64或两者?我想象有一种方法(显然),尽管我真的不知道如何。如果您有任何建议,我们将不胜感激,谢谢

编辑:我在Apple开发者网站上找到了一个例子,尽管它是用C语言编写的,并且设置为更多地用作命令行工具。如果有人知道如何将它实现到我的objective-c代码中,那将非常有帮助

  • 示例[C]代码:

您可以包括
mach-o
标头,只需加载二进制文件,然后检查
mach\u标头
。你应该阅读苹果公司的Mach-O格式说明以了解更多信息,它包括你需要的一切:

你可以解析
文件的输出
objdump
。可能是@grahamparks的重复,它似乎只检测应用程序本身(带有该代码)正在运行的架构。我试图检测与我的应用程序无关的完全不同的二进制代码。我从apple developer示例中找到了一些C代码,尽管我不确定如何将其与我的objective-C代码集成。@JustSide,我将如何包含它们?i、 e.
-(void)检测{[self-architecture];}
- (void)checkArchitecture {

NSArray *bundleArch = [[NSBundle bundleWithPath:@"/path/to/other/bundle"] executableArchitectures];

}