导入UIKit(它本身就有Foundation导入)时,我是否应该包括Foundation导入?UIKit将来能在没有Foundation的情况下工作吗?理论上,它能在未来破解我的代码吗?
rryofs0p1#
始终导入您可以忽略的 * 最低 * 级别:
UI
你应该只做 * 一个 * 上面的事情,至于你原来的问题,UIKit本身导入了Foundation(你说得对),所以如果一个文件导入了UIKit,它不需要显式导入Foundation,你应该 * 不 * 显式导入它。UIKit不会在未来神奇地失去访问Foundation类型的能力。没有NSString的UIKit在形而上学上是不可能的。相反,如果NSString消失了,UIKit本身也会消失,* 那 * 就是破坏。
0lvr5msh2#
不需要,您不需要同时导入Foundation和UIKit。如果您使用任何UI* 类型,UIKit就足够了。如果您不使用任何UI* 类型,您就不需要UIKit,只可以保留Foundation。
shyt4zoc3#
不,你只需要为不使用UIKit的类导入Foundation。将来您可能会希望使用通过SwiftUI或AppKit导入Foundation的类,因此最好将UI代码与非UI代码分开。我个人甚至不会在视图模型中使用UIImage或UIColor,因为我认为视图模型应该是Foundation only。
UIImage
UIColor
gr8qqesn4#
UIKit在Foundation之前更有可能成为多余的,SwiftUI已经成为UIKit的替代品,而Foundation比UIKit更通用,例如,如果你有只需要Foundation的东西,它可能在UIKit应用程序、SwiftUI应用程序、MacOS ApplicationKit应用程序、TVOS应用程序、没有GUI的Comandline工具中工作。
4条答案
按热度按时间rryofs0p1#
始终导入您可以忽略的 * 最低 * 级别:
UI
开头),请导入UIKit。你应该只做 * 一个 * 上面的事情,至于你原来的问题,UIKit本身导入了Foundation(你说得对),所以如果一个文件导入了UIKit,它不需要显式导入Foundation,你应该 * 不 * 显式导入它。
UIKit不会在未来神奇地失去访问Foundation类型的能力。没有NSString的UIKit在形而上学上是不可能的。相反,如果NSString消失了,UIKit本身也会消失,* 那 * 就是破坏。
0lvr5msh2#
不需要,您不需要同时导入Foundation和UIKit。如果您使用任何UI* 类型,UIKit就足够了。如果您不使用任何UI* 类型,您就不需要UIKit,只可以保留Foundation。
shyt4zoc3#
不,你只需要为不使用UIKit的类导入Foundation。
将来您可能会希望使用通过SwiftUI或AppKit导入Foundation的类,因此最好将UI代码与非UI代码分开。
我个人甚至不会在视图模型中使用
UIImage
或UIColor
,因为我认为视图模型应该是Foundation only。gr8qqesn4#
UIKit在Foundation之前更有可能成为多余的,SwiftUI已经成为UIKit的替代品,而Foundation比UIKit更通用,例如,如果你有只需要Foundation的东西,它可能在UIKit应用程序、SwiftUI应用程序、MacOS ApplicationKit应用程序、TVOS应用程序、没有GUI的Comandline工具中工作。