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