这是构造标头导入

时间:2015-07-10 14:42:16

标签: ios

我正在构建一个应用程序,我在其中创建了一个Menu类,这是一个向用户呈现的tableview(包含指向不同视图控制器的链接,应该在单击时显示)。 而不是导入任何viewc。在我的任何一个视图中的标题。我决定将所有视图控制器标题导入我的Menu.h.这样我就可以从菜单类中进行所有应用程序导航。然后我将在appDelegate.h中导入menu.h,然后只将appDelegate.h导入到我的所有视图控制器中。这有什么不可预见的缺点,或者我应该采取另一种方式吗?感谢

2 个答案:

答案 0 :(得分:0)

如果它编译然后就可以了,但是最好在头文件中使用前向声明,以便尽可能缩短编译时间。

任何自定义类型都可以在using类的头文件中使用:

进行前向声明
select `map_user_question_vote`.`id_question,` as `SUM(map_user_question_vote.vote)`, `` from `questions`
left join `map_user_question_vote` on `map_user_question_vote`.`id_question` = `questions`.`id`
where `questions`.`id_user` = 1 and `map_user_question_vote`.`id_question` = questions.id
group by `questions`.`id`

然后在using类的实现文件中,包含实际的头文件:

@class YourViewController;

使用转发声明还可以停止依赖关系循环,其中#import "YourViewController.h" 包含A.h,其中包含B.h

答案 1 :(得分:0)

这样做你将有一个包含循环(这很糟糕!)。

Menu.h正在导入ViewController1.h

AppDelegate.h正在导入Menu.h(和ViewController1.h

ViewController1.h正在导入AppDelegate.h(以及Menu.h(和ViewController1.h))

一个干净的解决方案是在需要时使用Forward声明,并在.m文件中导入