【发布时间】:2014-03-05 13:23:32
【问题描述】:
我知道在 stackoverflow 上有很多关于 @class 前向声明和 #imports 之间差异的问题 - 我明白这主要是编译器优化和减少循环导入问题。
我的问题更多是关于以下情况下的编码风格,例如我有如下的模型结构。
// Classroom.h
@class Teacher;
@interface ClassRoom : NSObject
@property (nonatomic, strong) Teacher *teacher;
- (NSArray *)students;
@end
// Teacher.h
@interface Teacher : NSObject
@property (nonatomic, strong) NSString *firstName;
@property (nonatomic, strong) NSString *lastName;
@end
现在,当我在另一个课程中使用它时,如果我想通过
访问 firstName 属性,我需要同时导入 Teacher.h 和 ClassRoom.hteacherObject.firstName
如果我使用#import Teacher.h 而不是@class Teacher;我只需要导入#Teacher。
所以我的主要问题是,这是否是使用导入而不是前向声明的合理场合?我在项目中使用的实际模型结构比这复杂得多,而且我经常必须在我的实现文件的开头(在控制器中)导入 5-10 个不同的模型类。虽然这不会伤害任何东西,但它确实会变得令人沮丧并使源代码更长。我很想听听 Objective-C 资深人士对此的看法。
【问题讨论】:
-
@class vs. #import 的可能重复项
-
@Avt 谢谢你的链接。我在搜索 StackOverflow.com 时确实发现了这个问题(以及更多问题),但这并不是我要问的。我很好奇在深层模型层次结构中使用#imports 来防止在使用该模型的所有控制器类中出现数十行导入是否是一种好习惯。谢谢。
标签: objective-c cocoa import forward-declaration