XCode 设置以查看在以前的操作系统版本上不起作用的代码

Posted

技术标签:

【中文标题】XCode 设置以查看在以前的操作系统版本上不起作用的代码【英文标题】:XCode setting to see code which won't work on previous OS versions 【发布时间】:2014-01-30 11:24:50 【问题描述】:

我已经专门为 ios7 编写了一个应用程序,现在正试图让它适用于 iOS6。

我真的很想要一个启用警告的设置,该设置会突出显示在 iOS6 上不起作用的代码行。即对仅适用于 iOS7 的代码的任何调用。

这样,我可以在调试期间捕获它们之前立即识别出我需要处理的任何代码行。

这真的存在吗?

【问题讨论】:

我认为这是不可能的。唯一的方法是在 iOS6 下运行您的应用程序并彻底调试并查找崩溃。 尝试将部署目标设置为 iOS 6 @Volker 这将如何产生警告? @Volker 这不会改变任何事情,无论如何,谢谢。 【参考方案1】:

有两种方法可以解决这个问题。

    使用MJGAvailability,头文件中的一个下拉菜单,如果选择器“太新”,它将发出警告。 购买Delpoymate,它可以扫描您的 Xcode 项目并向您显示任何不兼容的调用。

如果您在最新的 Xcode 旁边使用较旧的 Xcode,则使用此 sn-p:

if ([self respondsToSelector:@selector(newSelector)])
#if __IPHONE_7_0
      [self newSelector];
#endif
 else 
      [self oldSelector];

【讨论】:

MJGA 可用性 FTW!谢谢图斯!【参考方案2】:

没有办法出现警告,即使有 IDE 现在你会像下面那样做一些事情来处理它

if([myObject respondsToSelect:@selector(myiOS7SelectorOnly)]) 
    [myObject myiOS7SelectorOnly];

如果您在为 iOS7 开发应用程序并且您使用了 iOS7 API 不再使用的已弃用方法,它会以另一种方式工作,它会给您一个警告,但不是您必须等待它的其他方式转身崩溃并抛出unrecognised selector 异常。

【讨论】:

是的,我很欣赏警告可能不是解决此问题的正确“策略”。但我确实认为有一个用例可以识别不适用于特定操作系统版本的代码行。 有没有办法将BaseSDK临时设置为iOS6?那行得通吗?我只有 iOS7 作为选项,所以无法尝试。 是的,我可以看到需要它,但不幸的是它只是以另一种方式而不是你想要的方式。你可以搜索一个非官方的 xcode 插件,但我不确定你到底要搜索什么。 您也许可以从苹果网站的苹果开发者专区下载 iOS 6 sdk,但我不确定。就Apple而言,它应该只以一种方式而不是另一种方式工作,他们通过将事物标记为已弃用来做到这一点,这就是它在许多编程语言中的方式,而不仅仅是objective-c【参考方案3】:

在某个时候,我安装了 2 个 Xcode - Xcode 4 和 Xcode 5。Xcode 4 没有适用于 ios7 的 API,并且显示所有不兼容问题。 但我不知道你现在在哪里可以找到 XCode4,它是否仍然会在 ios7 代码中显示错误? 至少你可以尝试这种方式。

【讨论】:

不过,一旦您处理了警告,就不会摆脱它们。此外,我相信只要安装了 xcode 5,您就可以在 xcode 4 中开发 iOS 7,因为它将使用相同的库(这只是在这里-说我从未尝试过)。 当然,警告和错误会保留。我没有使用 XCode4 进行编译,我只是用它来检查可能有什么问题。问题要求以某种方式自动查看可能的错误位置,xcode4 可能会有所帮助 我不确定它会不会,但我不会投反对票,因为要找出你是否错了,我将把它留给 OP 来做。

以上是关于XCode 设置以查看在以前的操作系统版本上不起作用的代码的主要内容,如果未能解决你的问题,请参考以下文章

为啥 pull-right 类在 bootstrap 版本 4.1.0 上不起作用? [复制]

使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作

Swift 3:按钮在控制器上不起作用添加为子视图

锁定方向在 ipad ios 8 swift xcode 6.2 上不起作用

以编程方式创建 UIView 在 Xcode 11.1 中不起作用

为啥外部链接在构建后在 phonegap 应用程序上不起作用