pragma mark @class
pragma mark 概念
/**
* @class 可以提升編譯效率
作用是
可以簡(jiǎn)單的引用一個(gè)類
簡(jiǎn)單實(shí)用
@class Dog(類名)
僅僅告訴編譯器:Dog是一個(gè)類,并不會(huì)包含Dog這個(gè)類的所有內(nèi)容
具體使用
在.h文件中實(shí)用@class引用一個(gè)類
在.m文件中使用#import包含這個(gè)類的.h文件
總結(jié):
1.如果都在.h中import,假如A拷貝了B,B拷貝了C,如果C被修改了,那么B和A都需要重新拷貝,因?yàn)镃修改了那么B就會(huì)重新拷貝,二B重新拷貝了之后相當(dāng)于B也被拷貝了,那么也就是說如果都在.h拷貝,只要有間接關(guān)系都會(huì)重新拷貝
2.如果在.h中用@class,在.m用import,那么如果一個(gè)文件發(fā)生了變化,只有和這個(gè)文件有直接關(guān)系的那個(gè)文件才會(huì)重新拷貝
3. 所以在.h用@class可以提升編譯效率
*/
pragma mark 代碼
#import <Foundation/Foundation.h>
#pragma mark 類
#pragma mark main函數(shù)
int main(int argc, const char * argv[])
{
return 0;
}
Person.h //人類
#import <Foundation/Foundation.h>
//#import "Car.h"
/*
#import "Car.h"
相當(dāng)于
#import <Foundation/Foundation.h>
@interface Car : NSObject
@end
*/
// 由于import是一個(gè)預(yù)編譯指令,他會(huì)將""中的文件拷貝到所在的位置 \
并且import有一個(gè)特點(diǎn),只要""中的文件發(fā)生了變化,那么import就會(huì)重新拷貝一次(更新操作)
@class Car;
// @class 僅僅是告訴編譯器,@class后面的名稱是一個(gè)類,不會(huì)做任何拷貝操作
// 注意:由于@class僅僅是告訴編譯器后面的名稱是一個(gè)類,所以編譯器并不知道這個(gè)類中有哪些屬性和方法,所以在.m中使用這個(gè)類時(shí)需要import這個(gè)類,才能使用
@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
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。