我正在開發一個應用程序,我想在iOS4和iOS5上運行,但對於iOS5的用戶,我想使用iOS5功能作爲界面的一部分(iOS4用戶會得到不太令人興奮的東西)。我的問題是檢查設備上特定操作系統的可用性的過程是什麼。我的理解是,我不檢查操作系統版本,而是一個特定的類的可用性,任何人都可以幫助我擺脫最好的方式來做到這一點...檢查操作系統版本上的功能/類別?
回答
不是iOS 5下的NDA?
總之,要檢查是否有功能存在那就試試這個:
if (NSClassFromString(@"UIStepper")) {
//enter code here
} else {
//enter code here
}
自定義您的需求。
編輯:iOS 5現在發佈,所以我現在可以添加「UIStepper」我的代碼。
Class stepperClass = NSClassFromString(@"UIStepper");
if (stepperClass) {
// class is available, use it
} else {
// class not available, don't use it or use something else
}
iOS5的是保密協議,所以我難道不提,可能會或可能不存在的任何新類。但是,下面的代碼應該做你想要的。它從docs中解除。
if ([UINewClass class]) {
// Create an instance of the class and use it.
} else {
// Alternate code path to follow when the
// class is not available.
}
這使用弱鏈接,因此需要在您正在使用的SDK中編譯新類(UINewClass)。這是iOS 4.2中引入的一個相對較新的功能,可能不被所有框架支持。一種解決方法是使用老式(從上述同樣的鏈接):
Class cls = NSClassFromString (@"UINewClass");
if (cls) {
// Create an instance of the class and use it.
} else {
// Alternate code path to follow when the
// class is not available.
}
+1提及NDA – Toastor
當在iOS <3.1上運行時,「[UISomeNewClass class]」將不起作用,因爲不支持弱鏈接。如果你真的需要支持舊的iOS版本,你需要使用'NSStringFromClass()'。 – gcbrueckmann
@gcbrueckmann:我不知道,謝謝。儘管OP表示他只想支持4和5。 – brain
如果你想獲得UIStepper到4.x的正常降級,您不僅可以使用
if(NSClassFromString(@"UIStepper"))
相反,您還必須檢查具有響應的UIStepper特定的選擇器。哈利木下博的評論所說,做一個好方法是:
if(NSClassFromString(@"UIStepper") && [theStepper respondsToSelector:@selector(setValue:)])
這解決了我的應用程序下的iOS 4.x的崩潰問題
哈里伍德幫我解決了我所看到的問題,我希望他能夠獲得這個榮譽。
- 1. 檢查DLL操作系統版本
- 2. 檢查操作系統版本
- 3. jQuery - 檢測操作系統和操作系統版本
- 4. C++檢測操作系統版本
- 5. Android NDK不同操作系統版本的功能兼容性
- 6. 如何檢查android操作系統版本的bluestacks模擬器
- 7. 檢查操作系統版本的Windows Phone 7
- 8. 如何檢查Flutter的設備操作系統版本?
- 9. Environment.GetEnvironmentVariable檢查操作系統版本32位/ 64位
- 10. 操作系統版本,API級別和Java版本之間的關係
- 11. 如何檢查我的Windows 10操作系統上有哪些babel版本?
- 12. 檢測外殼腳本中的Windows操作系統版本
- 13. Node.js操作系統的功能
- 14. 檢測操作系統級別的引發事件(操作系統外觀)
- 15. 舊版API版本的回退以允許舊版操作系統版本的有限功能
- 16. 需要一個bash腳本來檢查它的操作系統版本
- 17. Xcode 6.4操作系統版本問題
- 18. Xcode iPhone操作系統多個版本
- 19. 獲取Android操作系統版本表
- 20. 黑莓操作系統版本限制
- 21. 爲主要操作系統版本設置最低操作系統版本,同時允許以前的操作系統版本?
- 22. 檢查CSS之間的區別操作系統的
- 23. 功能叉在操作系統
- 24. UNIX操作系統結構層功能
- 25. 從CAPL訪問操作系統功能
- 26. 如何檢測Adobe AIR中的Android操作系統版本?
- 27. 要在Chrome中檢測操作系統的JavaScript版本37.0.2062.94
- 28. 設置操作系統標誌來測試操作系統的具體功能
- 29. Linux操作系統和移動操作系統之間的根本區別(android)
- 30. windows mobile(過去的操作系統)和windows phone 7操作系統的功能有什麼區別?
此問題已在Google上! :rolleyes: –
@Bo A,非常感謝,感謝您的鏈接。 – fuzzygoat
對此有何更新? –