二者的区别
当前有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
,.这样即可以减少编译时间,也可以减少对象之间的依赖性。