@class Classname
旨在告诉编译器某个符号存在,解决当没有include该头文件时导致该符号不能被正确解析的问题。
例子:
// EOCCompany.h
#import <Foudation/Foudation.h>
@interface EOCCompany: NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, strong) EOCEmployee *employee;
在上述例子中,如果没有#import <EOCEmployee.h> ,就会导致EOCEmployee符号解析错误。
而如果采用#import <EOCEmployee.h>,则一并引入该文件中所有内容,增加编译时间。
此外,如果在EOCEmployee.h文件中存在如下代码:
- (void) addEmployee:(EOCCompany *)company;
- (void) removeEmployee:(EOCCompany *)company;
则会导致两个头文件相互引用,虽然采用import不会像include一样产生死循环,但是会导致其中一个文件无法被正确编译。
因此,在实际应用中,应当在头文件中尽可能地不要引入其他头文件,而是采用向前声明@class EOCEmployee的方式告知编译器。
如果某个类需要遵循某个协议的时候,不能使用向前声明:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。