二者的区别
当前有Person.h文件一枚.
@interface Person : NSObject
@property (nonatomic, copy) NSString *age;
@property (nonatomic, copy) NSString *name;
- (void)eatFood;
- (void)sleep;
@end
-
#import "Person.h"会把该Person.h下的所有实例方法及属性引用到需要import的xxx.h类中,倘若将xxx.h引入到其他类时,Person.h中的方法及属性也会同时被引入到该类中,这样会加大编译时间,不是一种优雅的作法 -
@class Person(向前声明),则会避免这个问题,其主要作用是告诉编译器存在Person这个类,并不会编译Person.h下的实例方法跟属性,可以大大减少编译时间。但是想要使用Person.h里的具体方法及属性则需要在.m里import。 - 当然也存在必须要
import的时候,比如协议以及需要用到方法及属性时
使用总结
- 在使用时,考虑清楚会不会用到导入类的方法及属性或者协议等,优先使用
@class,实在不行在使用#import,.这样即可以减少编译时间,也可以减少对象之间的依赖性。
