【问题标题】:Should I import Foundation while importing UKit?我应该在导入 UKit 的同时导入 Foundation 吗?
【发布时间】:2022-06-19 17:45:09
【问题描述】:

在导入 UIKit(本身具有 Foundation 导入)时,我是否应该包括 Foundation 的导入?

未来 UIKit 是否可以在没有 Foundation 的情况下工作,并且理论上会破坏我的代码?

【问题讨论】:

    标签: ios swift xcode uikit foundation


    【解决方案1】:

    始终导入您可以逃脱的最低级别:

    • 如果您的文件是纯 Swift 库,则不导入任何内容。

    • 如果您的文件需要 Foundation 类型,请导入 Foundation。

    • 如果您的文件需要 UIKit 类型(它们都以 UI 开头),请导入 UIKit。

    • 如果您的文件需要 SwiftUI 类型,请导入 SwiftUI。

    你应该完全做到上述一个。至于您最初的问题, UIKit 本身会导入 Foundation (正如您所说的那样)。因此,如果一个文件导入 UIKit,它不需要显式导入 Foundation,您应该显式导入它。

    UIKit 在未来不会神奇地失去访问 Foundation 类型的能力。没有 NSString 的 UIKit 将是形而上学的不可能。相反,如果 NSString 消失了,UIKit 本身也会消失,而 that 将成为破坏。

    【讨论】:

    • 我们知道 SwiftUI 暗含 UIKit 吗?两者都导入有意义吗? (我完全同意其他情况。)
    • @RobNapier 我认为确实如此,因为我在 SO 上看到了纯 UIKit 但程序员(错误地)导入了 SwiftUI 的代码。但是,如果我错了,我可以删掉这条线。
    • 是的,它绝对“有效”(SwiftUI 几乎可以肯定 确实 导入 UIKit,因为东西可以编译)。很难想象他们会打破这一点,即使 SwiftUI 达到了它不需要任何 UIKit 的地步,所以你的层次结构可能是正确的。
    【解决方案2】:

    不,您只需要为不使用 UIKit 的类导入 Foundation,您可能希望将来使用通过 SwiftUI 或 AppKit 导入 Foundation 的类,因此最好将您的 UI 代码与您分开没有 UI 代码,我个人什至不会让 UIImage 或 UIColor 出现在 viewModels 中,因为我认为 viewModels 应该只是 FoundationKit。

    【讨论】:

    • 我的问题是指其他情况 - 当已经需要导入 UIKit 时是否需要 Foundation?
    【解决方案3】:

    不,您不需要同时导入 Foundation 和 UIKit。 如果您使用任何 UI* 类型,UIKit 就足够了。 如果不使用任何 UI* 类型,则不需要 UIKit,可以只留下 Foundation。

    【讨论】:

      【解决方案4】:

      UIKit 更可能在 Foundation 之前被淘汰,SwiftUI 已经成为 UIKit 的替代品,Foundation 比 UIKit 更通用,例如,如果你有一些只需要基础的东西,它可以潜在地工作在一个UIKit 应用程序、SwiftUI 应用程序、MacOS ApplicationKit 应用程序、TVOS 应用程序、没有 GUI 的命令行工具。

      【讨论】:

        猜你喜欢
        • 2011-02-17
        • 1970-01-01
        • 2016-02-29
        • 2022-11-27
        • 1970-01-01
        • 2011-03-10
        • 1970-01-01
        • 2018-02-03
        • 1970-01-01
        相关资源
        最近更新 更多