【问题标题】:Why UIView doesn't need QuartzCore.framework to work?为什么 UIView 不需要 QuartzCore.framework 工作?
【发布时间】:2013-02-20 09:01:23
【问题描述】:

我意识到每个视图都由 CALayer 支持。 所以我想知道为什么我们在使用 UIView 时不需要在我们的项目中导入 QuartzCore.framework ?

我知道如果我们需要设置诸如 shadowOffset 之类的属性,我们需要这样做,但我确信在它自己的实现中需要设置这些属性。

感谢您的回答。

【问题讨论】:

    标签: ios uiview uikit core-animation calayer


    【解决方案1】:

    因为除非您更改 UIView 层的属性,否则您不会直接访问任何 CALayer 属性或方法。 UIView 在内部使用它。

    编辑你不需要链接它只是为了使用 UIView 的原因是因为 UIView 是一个已经编译的库。里面的所有符号都已被解析(或标记为弱,也就是在运行时解析),因此编译器和链接器只需按原样使用它们。

    【讨论】:

    • 好的,但是如果我使用 mapkit.framework 创建一个框架。如果你想使用我的自定义框架,你必须导入它和 mapkit.framework 对吗?
    • 不,我认为您不了解“导入”的实际作用。如果您直接使用其中的函数,则只需要导入某些内容。你当然需要链接它,但你不需要导入它。
    • 我不是说#import 抱歉。我的意思是将二进制文件与库链接。我同意你的观点,我不需要导入 QuartzCore,但我至少应该链接 QuartzCore 以便 uikit/UIView 使用 CALayer no ?
    • 是的,默认情况下所有 Xcode 项目都会链接 QuartzCore。不需要使用 UIView 的原因是 UIView 已经编译好了。
    【解决方案2】:

    如果你正在使用这个框架的任何类,你只需要QuartzCore.framework 框架。
    所以UIView 类正在导入这些框架。
    P.S. 导入框架并不意味着现在您可以使用该框架。这些框架已经在iOS 中,您只需导入它们,这样您就可以抑制编译器警告并且您的项目编译成功。

    【讨论】:

    • 好的,但是如果我使用 mapkit.framework 创建一个框架。如果你想使用我的自定义框架,你必须导入它和 mapkit.framework 对吗?
    • 如果您的框架已编译,那么我认为您不必导入 mapkit.framework
    猜你喜欢
    • 1970-01-01
    • 2017-10-18
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多