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