2014-05-20 91 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

相關問題