2011-10-06 94 views
2

我開始以爲我想測試或檢測iOS是否爲4.x版本,所以我會知道我可以使用Grand Central Dispatch來運行併發線程。如果它小於iOS 4,我會運行代碼,但不能作爲線程並採取行動。但是在讀取堆棧溢出時,我讀了 -如何在iPhone上檢測Grand Central Dispatch功能支持?

----「您應該完全避免詢問系統版本 更好的設計會詢問某個特定功能,例如:if(NSClassFromString(@」UIPrintInfo 「))會告訴你目前的設備是否支持4.2或更高版本的打印API。這樣,你可以計劃你的代碼使用一個功能,如果它可用的話,而不是基於OS版本。」

這很有道理。因此,而不是測試iOS 4,我會用什麼代碼安全的方法來檢測Grand Central Dispatch支持?

回答

4

您可以檢查,看是否有功能在運行時存在通過像這樣比較NULL:

if (dispatch_async != NULL) { 
    NSLog(@"We have GCD"); 
} 
else { 
    NSLog(@"We don't have GCD"); 
} 

注:我沒有實際測試過這一點。

+0

這是一個有趣的想法。我的手機上有iOS4,我想知道如何測試它。我希望我能把模擬器撥到3.x,但至少我沒有提供。任何人都可以證實這是一種可能的工作技巧嗎?聽起來不錯。 – Ric

+0

我剛剛在我的3G上測試過 - 這是行不通的:( – tarmes

+0

「if(&dispatch_async!= NULL)」而不是「if(dispatch_async!= NULL)」怎麼樣?檢查指向函數的指針是否爲null應該工作,我想。 – Kevlar

相關問題