设置一个应用程序来检测操作系统版本。和 iPhone 或 iPad

Posted

技术标签:

【中文标题】设置一个应用程序来检测操作系统版本。和 iPhone 或 iPad【英文标题】:Setup an app to detect OS ver. and iPhone or iPad 【发布时间】:2010-07-21 16:04:48 【问题描述】:
    如何检测我的应用程序是在 iPhone 还是 iPad 上运行,以及它运行的 ios 版本是什么? 我能否以类似于#if _OS4.0#if IPAD 或类似方式的方式使用预处理器宏? 这是 kosher,还是我应该只制作单独的版本以供提交?

【问题讨论】:

【参考方案1】:

通常使用基于操作系统版本的功能是不好的做法。

根据建议,尽可能使用 UI_USER_INTERFACE_IDIOM()。同时使用:

Class qlPreview = NSClassFromString(@"QLPreviewController");

UIScreen *mainScreen = [UIScreen mainScreen];
if([mainScreen respondsToSelector:@selector(scale)])
     NSLog(@"screen scale: %f",[mainScreen scale]);

但是,有时您无法避免它检查系统版本。

【讨论】:

请注意,UISwipeGestureRecognizeraddGestureRecognizer: 甚至在 3.2 之前就存在——它们只是私有的。 对,不好的例子 :) 更新了。【参考方案2】:

UI_USER_INTERFACE_IDIOM() 可用于检测设备。 可能的返回值是:

UIUserInterfaceIdiomPhone UIUserInterfaceIdiomPad

if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )

还有 __IPHONE_3_2 定义可以提供帮助:

#ifndef __IPHONE_3_2
    /* ... */
#elif
   /* ... */
#endif

【讨论】:

这很有帮助,谢谢。不过,我遇到了其他一些问题。当我尝试使用我的 iPad 目标进行构建时,我的 iAd 内容的所有代码都会中断。

以上是关于设置一个应用程序来检测操作系统版本。和 iPhone 或 iPad的主要内容,如果未能解决你的问题,请参考以下文章

iphone恢复历史版本

创建 NSBundle

iPhone 模拟器 - 如何检测应用程序何时在模拟器上运行(因此可以设置测试数据)?

iPhone上的频率检测

是否可以从 iPhone 应用程序中关闭漫游?

如何检测 iPhone 应用程序中的内存泄漏/电池耗尽