@class只是告诉编译器,有这个类,而@import会把文件整个包含进来
一般来说,@class用于xxx.h定义文件中,@import用于xxx.m实现文件中
A.h
#import <Foundation/Foundation.h>
@interface A : NSObject
-(void) a;
@end
A.m
#import "A.h"
@implementation A
-(void)a{
NSLog(@"A.a");
}
@end
B.h
#import <Foundation/Foundation.h>
#import "C.h"//因为C是用于继承的类,需要知道有哪此方法信息与成员变量
@class A;
@interface B : C
@property A *a;//如果只是用于变量类型就可以用@class
@end
C是一个空类,所以此处就不贴出来了
B.m#import "B.h"
#import "A.h"
@implementation B
-(void)b{
[_a a];
}
@end
比如,后面会用到@protocol,作用也是一样的