我应该在我编码的每个文件中导入UIKit吗?

Ant*_*nko 20 iphone sdk view uiview

我正在为iPhone编码并想知道我是否需要在每个代码文件中包含UIKit,或者是否有更好的规则,何时这样做以及何时不需要?

谢谢!

Rob*_*ier 26

虽然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,所以没有理由再导入它们.


Yan*_*iot 21

当您需要GUI组件时,必须使用UIKit.但是如果已经在Prefix.pch上定义了这个库,则不需要导入它:

#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
#endif
Run Code Online (Sandbox Code Playgroud)

它允许您为所有当前项目导入这些库.