pragma mark @class
pragma mark 概念
/**
* @class 可以提升编译效率
作用是
可以简单的引用一个类
简单实用
@class Dog(类名)
仅仅告诉编译器:Dog是一个类,并不会包含Dog这个类的所有内容
具体使用
在.h文件中实用@class引用一个类
在.m文件中使用#import包含这个类的.h文件
总结:
1.如果都在.h中import,假如A拷贝了B,B拷贝了C,如果C被修改了,那么B和A都需要重新拷贝,因为C修改了那么B就会重新拷贝,二B重新拷贝了之后相当于B也被拷贝了,那么也就是说如果都在.h拷贝,只要有间接关系都会重新拷贝
2.如果在.h中用@class,在.m用import,那么如果一个文件发生了变化,只有和这个文件有直接关系的那个文件才会重新拷贝
3. 所以在.h用@class可以提升编译效率
*/
pragma mark 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#pragma mark main函数
int main(int argc, const char * argv[])
{
return 0;
}
Person.h //人类
#import <Foundation/Foundation.h>
//#import "Car.h"
/*
#import "Car.h"
相当于
#import <Foundation/Foundation.h>
@interface Car : NSObject
@end
*/
// 由于import是一个预编译指令,他会将""中的文件拷贝到所在的位置 \
并且import有一个特点,只要""中的文件发生了变化,那么import就会重新拷贝一次(更新操作)
@class Car;
// @class 仅仅是告诉编译器,@class后面的名称是一个类,不会做任何拷贝操作
// 注意:由于@class仅仅是告诉编译器后面的名称是一个类,所以编译器并不知道这个类中有哪些属性和方法,所以在.m中使用这个类时需要import这个类,才能使用
@interface Person : NSObject
@property (nonatomic,retain) Car *car;
@end
Person.m
#import "Person.h"
#import "Car.h"
@implementation Person
@end
Car.h //车类
#import <Foundation/Foundation.h>
//#import "Wheel.h"
@class Wheel;
@interface Car : NSObject
@property(nonatomic, retain)Wheel *wheel; // 轮子
@end
Car.m
#import "Car.h"
#import "Wheel.h" // 必须要import 要不然不知道_wheel 不知道有哪些方法
@implementation Car
-(void)dealloc
{
[_wheel release];
[super dealloc];
}
@end
Wheel.h //轮子类
#import <Foundation/Foundation.h>
@interface Wheel : NSObject
@property (nonatomic,assign)int size;
@end
Wheel.m
#import "Wheel.h"
@implementation Wheel
@end
网友评论