gpt4 book ai didi

ios - @import 与 #import - iOS 7

转载 作者:IT老高 更新时间:2023-10-28 12:12:29 24 4
gpt4 key购买 nike

我正在使用一些新的 iOS 7 功能,并使用 WWDC 视频“在 iOS 上实现 Engaging UI”中讨论的一些图像效果。为了在 session 的源代码中产生模糊效果,UIImage 通过导入 UIKit 的类别进行了扩展,如下所示:

@import UIKit;

我想我在另一个 session 视频中看到了一些关于此的内容,但我找不到它。我正在寻找有关何时使用它的任何背景信息。它只能与 Apple 框架一起使用吗?使用此编译器指令的好处是否足以让我返回并更新旧代码?

最佳答案

这是一个名为 Modules 或“语义导入”的新功能。 WWDC 2013 中有更多信息 session 视频205404 .这是预编译头文件的一种更好的实现。 您可以将模块与 iOS 7 和 Mavericks 中的任何系统框架一起使用。 模块是框架可执行文件及其头文件的封装,被吹捧为比 #import 更安全、更高效。 .

使用 @import 的一大优势是您不需要在项目设置中添加框架,它会自动完成。这意味着您可以跳过单击加号按钮并搜索框架(金色工具箱)的步骤,然后将其移至“框架”组。它将使许多开发人员从神秘的“链接器错误”消息中解脱出来。

您实际上不需要使用 @import关键字。 如果您选择使用模块,所有 #import#include指令被映射为使用 @import自动地。这意味着您不必更改源代码(或从其他地方下载的库的源代码)。据说使用模块也可以提高构建性能,尤其是在您没有很好地使用 PCH 或者您的项目有很多小源文件的情况下。

模块是为大多数 Apple 框架(UIKit、MapKit、GameKit 等)预先构建的。你可以将它们与你自己创建的框架一起使用:如果你在 Xcode 中创建一个 Swift 框架,它们会自动创建,你可以为 any Apple or 3rd-party library 自己手动创建一个“.modulemap”文件。 .

您可以使用代码完成来查看可用框架的列表:

enter image description here

在 Xcode 5 的新项目中默认启用模块。要在旧项目中启用它们,请进入您的项目build设置,搜索“模块”并将“启用模块”设置为"is"。 “链接框架”也应该是"is":

您必须使用 Xcode 5 和 iOS 7 或 Mavericks SDK,但您仍然可以为较旧的操作系统(例如 iOS 4.3 或其他)发布。 模块不会改变您的代码的构建方式或任何源代码。


来自 WWDC 幻灯片:

  • Imports complete semantic description of a framework
  • Doesn't need to parse the headers
  • Better way to import a framework’s interface
  • Loads binary representation
  • More flexible than precompiled headers
  • Immune to effects of local macro definitions (e.g. #define readonly 0x01)
  • Enabled for new projects by default

显式使用模块:

替换 #import <Cocoa/Cocoa.h>@import Cocoa;

您也可以使用此表示法只导入一个 header :

@import iAd.ADBannerView;

Xcode 中的子模块会自动完成。

关于ios - @import 与 #import - iOS 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18947516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com