2012-08-06 129 views
21

我有一个库在XCode 4.4下开始引发一对连接器警告。警告是沿着“ld:warning:实例方法'methodName:'从类中覆盖类的方法”抑制实例方法覆盖链接器警告框架xcode

该框架仍然正常工作,并且我认为写它的公司会在下一个版本,但暂时这些警告是非常烦人的。有没有办法在不禁用链接器警告的情况下关闭它们?

+0

警告是什么意思? – trojanfoe 2012-08-06 13:56:34

+0

我认为这意味着让图书馆的人不恰当地分类了一些东西。似乎没有破坏任何东西,但链接器是有点whinny关于它烦人,因为我无法修复它,因为它是一个封闭的来源。 – ima747 2012-08-06 17:53:56

+0

您是否在类中创建/命名方法,与其他类中的另一种方法相同? – Hexark 2012-09-03 12:06:15

回答

13

有两个选项我想出了通过在XC添加标志,以“其他链接器标记” ODE构建设置区域:

1)将-Xlinker -w将抑制所有链接器警告,不管类型(这是-w标志给ld(1))。显然,这将安静的这个特别的警告,但也所有其他的LD警告。

2)添加-Xlinker -no_objc_category_merging将跳过优化步骤,链接器在链接过程中将所有类别方法组合到基类中,然后在运行时发生,而不是在运行时。微小的启动可能比较慢,但它可能仍然比在运行时调整方法更快,并且由于在这一步中ld(1)发出警告,所以它也会跳过。

看起来,ld没有办法通过手术来压制任何单独的警告,尽管编译器的操作方式是警告的,尽管它有几个专用标志或者其中的一些专用标志(这些标志都没有帮助这个标志)。上述两种解决方案都不适用于生产代码,但在某些情况下,其中一种可能会有所帮助。

+0

上面提到的同样的项目构建设置中添加-Wno-inconsistent-missing-override标志到“其他警告标志”。你拯救了我的一天 – larva 2014-10-15 10:13:38

1

如果隐藏了警告存在一个选项将是下:

项目导航(左侧的文件列表) - > [项目名称](带有蓝色图标的那个) - >构建设置 - >苹果LLVM编译器3.1 - 警告

另外:

In Xcode, how to suppress all warnings in specific source files?

+2

谢谢你。编译器部分没有特定于库的警告或我看到的特定警告。我可以关闭所有的警告,但这是我想要避免的。另一个引用的帖子也适用于将要编译的文件,但库和头文件不会在那里显示,因此无法专门在它们上设置标志。我必须假设,由于它来自库,因此无法禁用xcode中的警告。 – ima747 2012-09-04 12:45:58

+0

这是个不好的建议。我相信有很多叮当声警告,在Build Settings UI中没有复选框。通常在文件中设置一个特定的'-W'选项将在编译期间解决这个问题。在文件中设置'-fdiagnostics-show-option'选项,clang会告诉你使用哪个'-W'。在这种特殊情况下,这是行不通的,因为OP的问题是关于**链接器**,而不是编译器。 – paulmelnikow 2013-06-16 01:54:04

+0

另一个解决方案是编译器而不是链接器,它是诊断编译指示:http://clang.llvm.org/docs/UsersManual。html#controls-diagnostics-via-pragmas – paulmelnikow 2013-06-16 01:54:59