我正在为iPhone编码并想知道我是否需要在每个代码文件中包含UIKit,或者是否有更好的规则来决定何时这样做以及何时不需要?
谢谢!
答案 0 :(得分:25)
虽然pch文件可以方便地为您预编译标题,但我确实建议文件导入它们使用的内容。这使得理解依赖关系变得更加容易,并且更容易重用代码,包括跨平台重用(iPhone与Mac)。
考虑到这一点,答案是你不应该将UIKit.h导入到每个文件中。您应该将其导入到使用UIKit的每个文件中。那应该是你的View和Controller类。模型类几乎不应该使用UIKit。他们通常应该导入Foundation.h.遵循此规则可以轻松地将对象移动到.pch文件中可能包含不同代码的其他项目中,并且更容易在iPhone和Mac上重用模型类。
我通常也不建议您将UIKit.h或Foundation.h导入到您自己的类的子类中。我通常只是将UIKit,AppKit或Foundation导入到我的代码中的最高级头文件中。例如,如果我有一个名为MYAbstractView的UIView子类导入UIKit.h(包含UIView的定义),然后添加一个MYConcreteView子类,我只需导入MYAbstractView.h。
请注意,UIKit和AppKit都已经导入了Foundation,所以没有理由再导入它们。
答案 1 :(得分:21)
当您需要GUI组件时,必须使用UIKit。 但是如果已经在Prefix.pch上定义了这个库,则不需要导入它:
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif
它允许您为所有当前项目导入这些库。
答案 2 :(得分:0)
您应该将其导入任何需要它的类的.h文件中。这是真的,除非类扩展另一个导入它的类,然后你不需要。您可能不想做任何更复杂的事情,因为所有iPhone应用程序都将链接库。如果我们谈论的是第三方或不太常见的图书馆,那么您可能需要小心它。避免代码可重用性问题。