2012-10-11 106 views
4

我正在用dispatch_async編寫一些代碼,並在iphone 4s和ipad 1st gen上得到不同的結果。檢測iOS設備上的CPU核心

我想知道是否是由於CPU的核心數。是否有可能在運行時檢測到iOS設備的核心數或CPU類型,因此我可以在4s上使用dispatch_async,但不能在ipad上使用?

+0

不認爲它當之無愧爲一個downvote? – jarryd

回答

7

下面的代碼來檢測在iOS設備上的內核數量:

#include <sys/sysctl.h> 

unsigned int countCores() 
{ 
    size_t len; 
    unsigned int ncpu; 

    len = sizeof(ncpu); 
    sysctlbyname ("hw.ncpu",&ncpu,&len,NULL,0); 

    return ncpu; 
} 

除此之外,您可以檢查對[[UIDevice currentDevice] userInterfaceIdiom]以確定設備是iPhone或iPad的。就像這樣:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { 
    NSLog(@"iPad"); 
} 
else { 
    NSLog(@"iPhone"); 
} 

Reference

+0

'#include '是一個私人圖書館,是不是? – atxe

+1

我不這麼認爲。這只是一個標準的C庫。 –

+1

對於尋找物理內核的用戶,請使用鍵:hw.physicalcpu – logancautrell