objective-c @class

2018-04-10  本文已影响0人  一世长安乱
第一种应用场景
  1. 如果都在.h中import,假如A拷贝了B,B拷贝了C,C被修改,那么B和A都需要重新拷贝
  2. 如果在.h中使用@class,在.m中import,那么如果一个文件发生变化,只有和这个文件有直接关系的那么文件才会重新拷贝

如果A、B对象相互拥有,此时会形成循环retain
解决方法:让其中一方不要做retain操作

所以使用@class可以提升编译效率

第二种应用场景

如果两个类循环依赖造成死循环报错

在.h中使用@class,在.m中使用import

在.h中使用@class,不会做任何拷贝工作,在.m中使用import,只会拷贝对应的文件,不会造成死循环

和#import的区别
  1. @class只是告诉编译器有这个类,其他什么信息完全不知道
  2. 效率比#import高
上一篇下一篇

猜你喜欢

热点阅读