【问题标题】:How come Xcode doesn't automatically link with QuartzCore when the project uses it?项目使用时 Xcode 怎么不自动链接 QuartzCore?
【发布时间】:2012-05-07 18:23:49
【问题描述】:

我对使用 Xcode 开发 iOS 应用程序有些好奇,尽管我们特别声明:

#import <QuartzCore/QuartzCore.h>

在我们的ViewController.h 中,当项目链接时,QuartzCore 库不会自动链接。这是为什么呢?

【问题讨论】:

  • +1 为您的问题...即使在添加 QuartzCore 框架后,我也面临同样的问题。不得不谷歌这个语法 #import 很长时间。如果有自动完成功能,我会喜欢的。

标签: iphone ios xcode quartz-core


【解决方案1】:

因为导入标头与链接库没有任何关系。

您需要将 QuartzCore Framework 添加到您的目标链接的列表库中。

为什么 Xcode 不自动执行此操作?

嗯,您要导入的标头实际上是该框架的一部分。所以 Xcode 必须扫描所有的框架,检查它们的头文件,并可能自动链接连接的库。这对于与操作系统相关的框架当然是可行的,但对于自定义框架来说几乎是不可能的,只要 Xcode 不知道它们的位置。 有时,应用实际上并不想要链接到一个库,只是因为它们使用了例如在标头中定义的枚举。

【讨论】:

    【解决方案2】:

    Xcode 不会自动添加除 base 3 以外的任何库。只需链接即可。也许未来的版本会检测到,但现在你必须去构建阶段并链接它们。

    【讨论】:

    • 是的,鉴于 Xcode 是如此自动化,甚至可以自动完成您项目中的所有内容,即使您显然需要它也不进行链接,这有点奇怪......但也许它可以防止意外链接如果我们有多余的 #import 实际上并没有使用,那就太多了
    • 明显是相对的。有些人可能讨厌 Quartz 或不想使用它(我知道是一小群人),但自动链接到如此庞大且图形密集的框架可能并不是每个人都想要的,尤其是当 CG 弥补了 Quartz 时。
    【解决方案3】:

    关键是 Xcode 无法知道您的项目应该与 Quartz Core Framework 链接。

    #import &lt;QuartzCore/QuartzCore.h&gt; 不足以说您需要 Quartz Core Framework。 您可以编写自己的库,其中包含一个名为 QuartzCore.h 的头文件,并将其放在名为 QuartzCore 的文件夹下.如果它在你的include文件搜索路径中,是可以使用的,除非你在你的项目中也加入了官方的Quartz Core Framework(这会导致冲突)。

    还有其他例子。在 Visual Studio 中为 .NET 项目导入命名空间时,它不会自动将任何程序集添加到项目的“引用”中。这是因为您可以添加第三方程序集作为具有相同命名空间的引用。您还可以添加不同版本的官方 .NET Framework 程序集。

    【讨论】:

    • 实际上,您使用大于/小于符号来提供那些与操作系统相关的导入,以将它们标识为非用户标头(仅使用引号标记)
    • 一般来说你是对的。但是仍然可以将额外的包含路径传递给编译器并使其在使用 表单时搜索用户标头。参考stackoverflow.com/questions/1044360/…
    猜你喜欢
    • 1970-01-01
    • 2015-05-12
    • 2013-08-23
    • 2011-09-25
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多