2014-05-20 89 views
0

你知道任何API可以告诉我当前操作系统(iOS和MacOSX)的弱点吗?我们可以假设MacOSX是64位?是否有API知道当前的iOS/Mac是64位操作系统还是32位操作系统?

+1

为了澄清,您是否在寻找可以在您的应用中运行的代码,告诉您设备是64位还是您想确定当前程序的模式?因为32位应用程序可以在64位设备上运行,所以差别很大。 – rmaddy

+0

还有内核模式的问题。现在不太可能,但64位设备可能正在运行一个32位内核,它正在托管/管理64位进程等。 –

+0

我想知道内核位,而不是设备位,而不是程序运行模式。例如,32位Windows可以在64位CPU上运行。但我不在乎CPU的位数,我想知道OS/Kernel的位数。 – user3599379

回答

0

一般情况下,您可以假定OS X是基于操作系统版本的64位。 (更具体地说,可可版本)

更重要的是,你必须问自己你想要完成什么。通常情况下,框架可以保护您在大多数情况下不需要考虑这个问题,尤其是在Objective-C的土地上。 如果您在Objective-C的土地留下来,你可以去用简单的宏: CGFLOAT_IS_DOUBLE(从CGGeometry.h)

NSObjCRuntime.h定义NSInteger的和NSUInteger。 宏LP64发现有表示64位整数

https://developer.apple.com/library/Mac/DOCUMENTATION/Cocoa/Conceptual/Cocoa64BitGuide/64BitChangesCocoa/64BitChangesCocoa.html

一般来说,如果您尝试使用NSInteger的,NSUInteger和CGFloat的,你不需要去想它。

如果您想更详细地了解核心C型尺寸,您想了解所创建的标准模型。 LP64 ILP64 LLP64 ILP32 LP32 这些表明预期的结果。你不能真的假设有一个64位的模型。 根据体系结构,您可以拥有不同的整数和浮点数最大长度。 根据系统的不同,您甚至可以仿真一个类型的长度。 http://www.unix.org/version2/whatsnew/lp64_wp.html 这些都与宏定义如下LP64

可以在CFBase.h

发现这些不过真正的问题仍然是,什么是你想怎么办?

0

请检查this。这可能会帮助你。

你可以看到你正在使用的系统配置文件的内核:

Choose About This Mac from the Apple () menu. 
Click More Info. 
Select Software in the Contents pane. 
Look for "64-bit Kernel and Extensions: Yes (or No)" under the System Software Overview heading. 

这些苹果电脑在Mac OS X v10.6中默认使用64位内核。

Mac Pro (Mid 2010) 
MacBook Pro (Early 2011) 
iMac (21.5-inch and 27-inch, Mid 2011) 

这些Mac电脑默认情况下在Mac OS X服务器v10.6中使用64位内核(它们也可以使用在Mac OS X v10.6中64位内核,但默认情况下不会使用它)。

Xserve (Early 2008) and later 
Mac Pro (Early 2008) and later 
Mac mini (Mid 2010) 

这些Mac支持64位内核,但默认情况下不使用它。

iMac (Early 2008) and later 
MacBook Pro (Early 2008 through Mid 2010) 
+0

你有任何编程方式吗?谢谢。 – user3599379

+0

你试过这个吗, struct utsname un; INT解析度= UNAME(&un); 如果(RES> = 0){ 的NSLog(@ “%s” 时,un.machine); }。 你应该导入所需的库 即'#进口' – Neenu

+0

我试过了,它可以在Mac上运行,但是在iOS上并没有帮助。 – user3599379

相关问题