@class可以告诉编译器这个是一个类,为什么要必须有勒?
比如在组合种情况(就是一个类的成员变量中有对象成员变量):
一个学生,学生有一本书
在student.h文件中,如下代码
@interface Student : NSObject
@property(nonatomic, strong, readwrite)Book *book;
@end
假如没有@class Book;对Book声明它是一个类就会报错。
假如在这个.h文件中用#import来引用book.h,确实是可以的,但是student的.m和.h文件都会去导入这个头文件,这个性能就没有用@class那么好了,因为.h文件中只需要知道这是一个类就OK了,而对这个成员变量进行操作的方法都是在.m文件中实现的。所以,.h文件用@class进行声明就可以了,当.m文件中要用到这个类,再进行#import。 |