@class and #import

简介


在 Objective - C 中也使用了“头文件”和“实现文件”来区隔代码,所以在创建类的时候我们要通过@class和#improt 来实现两个类之间的互调。

异同


  • import 会包含当前类的所有信息(实体变量+方法)
    class 只是告诉编译器声明类的名称;
  • if(A,B,C 类种都import 了 D类)这样编译器编译程序的时候就先从 A中先把 D类的.h文件编译一遍,在 B 中又会将 D 类的.h文件再次进行编译,所以会增加编译器编译的时间;
  • if(存在依赖的关系,A 类中 import 了 B 类,B 类 import 了 A 类)这样相互引用,就会造成循环引用的问题,这时候就要用@class 来解决;

用法


例如:

#improt
@interface Person :NSObject
@property (nonatomic, copy)NSString * name
@property (nonatomic, strong)Man * manPerson;
@end

因为我们调用了Man这个类,所以我们在类中#import 或者@class 一个类名,这里我们就要用@class,因为在类的调用中没有用到 Man 类中的属性,如果在.m 中有用到 Man 类的属性的话,我们就需要在.m 中进行#import 中进行操作,这样才可以使得编译器编译代码的时候速度更快。

你可能感兴趣的:(@class and #import)