如何禁止Xcode 7.3警告“String literal不是有效的Objective-C选择器”

时间:2016-04-22 15:57:27

标签: xcode swift

我正在开发一个项目,在Xcode 7.2上使用了一些,在7.3上使用了一些项目(包括我自己)。我们不想强迫每个人升级到7.3(大多数人还必须更新他们的操作系统,我们将在发布日期关闭)。

如果我按照Xcode的建议使用#selector()来获取新语法,那么运行7.2的任何人都无法编译项目,因为它们会出错。使用Selector("…")允许项目在所有版本上进行编译,但它会创建一个警告,我很乐意压制它(在每个人升级后,它旁边有一个TODO可以删除)。

有没有办法压制这个警告,或者我现在应该忍住它作为快速升级的代价?

更新:在相关功能之前添加@objc原始警告更改为Use '#selector' instead of explicitly constructing a 'Selector',并且愿意为我做出更改,使代码取消可在Xcode 7.2或更早版本上编译。

由于问题不是已弃用的方法,因此在这种情况下,现有的两个答案都不起作用(我会使用@avaliable选项继续获取有关任何其他已弃用方法的警告,并根据具体情况做出决策虽然每个)。

2 个答案:

答案 0 :(得分:0)

有一种解决方法:

@available(iOS, deprecated=10.0)
func _Selector(str: String) -> Selector {
    return Selector(str)
}

但是你必须在你的代码中使用_Selector而不是Selector,而且我不确定Apple是否同意这一点,所以在提交AppStore之前,我建议删除@available(iOS, deprecated=10.0)

使用@available的信用转到Daniel Thorpe获取答案here

答案 1 :(得分:0)

这不起作用吗? 在您的目标构建设置:全部 Apple LLVM警告 - 不推荐使用的功能 - > NO