@class的使用格式:
@class xxx;
含义:告诉编译器,xxx 是一个类,至于类有哪些属性和方法,此处不去检测;
好处:如果xxx文件内容发生了改变,而不需要重新编译
@class 的使用注意:
1).h @class xx;
2) .m #import “xx.h”;
@class 的特殊用法: 可以解决循环引用问题
面试题:#import 和 @class 的区别?
作用上的区别:
#import会包含引用类的所有信息(内容),包括引用类的变量和方法,
@class 仅仅是告诉编译器有这么一个类,具体这个类里有什么信息,完全不知
效率上的区别:
如果有上百个头文件都#import了同一个文件,或者这些文件依次被#import,那么一旦最开始的头文件稍有改动,后面引用到这个文件的所有类都需要重新编译一遍,编译效率非常低,相对来讲,使用@class方法就不会出现这种问题了。
循环retain 会导致两个对象都会内存泄露
防止方法:
1)让某个对象朵释放一次(注意顺序)
2)推荐的方法:
一端使用assign, 一端使用retain |
|