引用其它协议
当跟复杂的应用打交道时,你偶尔会发现你写的代码看起来是这样的:
#improt “B.h”
@protocol A
- foo:(id <B>)anObject;
@end
协议 B 声明如下
#import “A.h”
@protocol B
-bar:(id<A>)anObject;
@end
在这种情况下,形成了死循环,最后结果就是两个文件都无法正确编译。要打破这个死循环,你必须使用 @protocol 指令对需要的协议做一个正向引用,来取代导入定义协议的接口文件。
@protocol B;
@protocol A
- foo:(id<B>)anObject;
@end
注意在使用 @protocol 指令时,在这种写法中只是简单的通知编译器, B 是一个晚些时候会定义协议。不能导入 B 协议所在文件。