温故而知新之@class
来源:互联网 发布:黑马程序员java博客 编辑:程序博客网 时间:2024/05/21 10:03
为了减少由依赖关系引起的重新编译所带的影响,Objective-C引入了关键字@class来告诉编译器:“相信我,以后你会知道这个类到底是什么,但是现在,你只需要知道这些。”
它并不需要知道关于这个类的更多信息,只要了解它是通过指针引用即可。
如下例所视:
#import
@class Tire;
@class Engine;
@interface Car : NSObject
{
Tire *tires[4];
Engine *engine;
}
- (void) setEngine: (Engine *) newEngine;
- (Engine *) engine;
- (void) setTire: (Tire *) tire
atIndex: (int) index;
- (Tire *) tireAtIndex: (int) index;
- (void) print;
@end // Car
为什么要用@class Tire;和@class Engine;呢?
如果此处用#import来导入Tire.h和Engine.h的话,编译器会获得这两个类的大量信息,上例中,只是通过指针引用了Tire和Engine。这是@Class可以完成的工作。
如果有循环依赖关系,@class也很有用,即,A类使用B类,B类也使用A类。如果试图通过#import语句让这两个类相互引用,那么最后就会出现编译错误,但是如果在A.h中使用@classB,在B.h中使用@classA,那么这两个类就可以相互引用了。
这样做的好处是:会减少#import带来的变异错误,并且速度也快。
- 温故而知新之@class
- [转载] 温故而知新之#Pragma
- [转载] 温故而知新之sscanf
- 温故而知新 之 description函数
- 温故而知新之 isEqualToString:
- 温故而知新之stringWithFormat:
- 温故而知新之异常处理
- 温故而知新之素数
- 温故而知新之EF框架
- 温故而知新之JQuery-CallBack
- Kafka温故而知新之初识
- 温故而知新
- 温故而知新
- 温故而知新
- 温故而知新
- 温故而知新
- 温故而知新
- 温故而知新
- 温故而知新之 isEqualToString:
- A. Shaass and Oskols
- 谷歌苹果无意和解专利诉讼 遭美法官抱怨
- 标签控件的背景透明
- 温故而知新之setter getter 方法
- 温故而知新之@class
- hdu 3361 ASCII
- 为了紧抓大数据命脉,百度不远万里到硅谷设立研究院
- Bash shell脚本备忘
- qanimationwriter.cpp:46:17: 错误: png.h:没有该文件或目录
- 温故而知新之stringWithFormat:
- Android新手上路
- 郭台铭玩跨界 电商平台或将上线
- 温故而知新之NSArray 和 NSMutableArray