2
为什么在Cocoa中不可能两个类都导入对方? 我尝试下面的代码:可可控制器导入模型,模型导入控制器 - >异常
或者Controller.h:
#import <Cocoa/Cocoa.h>
#import "Model.h"
@interface Controller : NSObject {
Model *model;
}
@end
Model.h:
#import <Cocoa/Cocoa.h>
#import "Controller.h"
@interface Model : NSObject {
Controller *controller;
}
@end
这引起了以下情况除外:
error: expected specifier-qualifier-list before 'Controller'
error: expected specifier-qualifier-list before 'Model'
能有人请解释为什么这是?
谢谢! xonic
这不是技术上的“例外”(这是一个运行时事件),这是一个编译器错误信息。 – 2010-05-20 12:38:33
在这种情况下,“为什么”相当简单,如果您在心里扩大#import以将一个文件的文本放入另一个文件中,您可以亲自看到它:在定义Controller之前导入Model的定义,但该定义使用控制器。反之亦然。有一个循环依赖,所以一个*总是*没有被定义在另一个之前。这就是为什么@class声明存在的原因:它只是说“我将在稍后定义它,同时不要担心它。”这打破了这个循环,等等。 – walkytalky 2010-05-21 23:33:14