【发布时间】:2022-06-19 17:45:09
【问题描述】:
在导入 UIKit(本身具有 Foundation 导入)时,我是否应该包括 Foundation 的导入?
未来 UIKit 是否可以在没有 Foundation 的情况下工作,并且理论上会破坏我的代码?
【问题讨论】:
标签: ios swift xcode uikit foundation
在导入 UIKit(本身具有 Foundation 导入)时,我是否应该包括 Foundation 的导入?
未来 UIKit 是否可以在没有 Foundation 的情况下工作,并且理论上会破坏我的代码?
【问题讨论】:
标签: ios swift xcode uikit foundation
始终导入您可以逃脱的最低级别:
如果您的文件是纯 Swift 库,则不导入任何内容。
如果您的文件需要 Foundation 类型,请导入 Foundation。
如果您的文件需要 UIKit 类型(它们都以 UI 开头),请导入 UIKit。
如果您的文件需要 SwiftUI 类型,请导入 SwiftUI。
你应该完全做到上述一个。至于您最初的问题, UIKit 本身会导入 Foundation (正如您所说的那样)。因此,如果一个文件导入 UIKit,它不需要显式导入 Foundation,您应该不显式导入它。
UIKit 在未来不会神奇地失去访问 Foundation 类型的能力。没有 NSString 的 UIKit 将是形而上学的不可能。相反,如果 NSString 消失了,UIKit 本身也会消失,而 that 将成为破坏。
【讨论】:
不,您只需要为不使用 UIKit 的类导入 Foundation,您可能希望将来使用通过 SwiftUI 或 AppKit 导入 Foundation 的类,因此最好将您的 UI 代码与您分开没有 UI 代码,我个人什至不会让 UIImage 或 UIColor 出现在 viewModels 中,因为我认为 viewModels 应该只是 FoundationKit。
【讨论】:
不,您不需要同时导入 Foundation 和 UIKit。 如果您使用任何 UI* 类型,UIKit 就足够了。 如果不使用任何 UI* 类型,则不需要 UIKit,可以只留下 Foundation。
【讨论】:
UIKit 更可能在 Foundation 之前被淘汰,SwiftUI 已经成为 UIKit 的替代品,Foundation 比 UIKit 更通用,例如,如果你有一些只需要基础的东西,它可以潜在地工作在一个UIKit 应用程序、SwiftUI 应用程序、MacOS ApplicationKit 应用程序、TVOS 应用程序、没有 GUI 的命令行工具。
【讨论】: