코코아에서 두 클래스가 서로 가져올 수없는 이유는 무엇입니까?코코아 컨트롤러 가져 오기 모델, 모델 가져 오기 컨트롤러 -> 예외
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
이는 "예외"(런타임 이벤트 인),이 컴파일러 오류 메시지의 기술적 없습니다. –
"이유"는이 경우 상당히 간단하며 #import를 정신적으로 확장하여 한 파일의 텍스트를 다른 파일에 배치하면 컨트롤러를 정의하기 전에 Model의 정의를 가져 오지만 그 정의에는 다음을 사용합니다. 제어 장치. 그 반대. 순환 종속성이 있으므로 항상 다른 하나보다 먼저 정의되지 않았을 것입니다. 이것이 바로 @class 선언이 존재하는 이유입니다. 간단히 말해서 "나중에 정의 하겠지만, 걱정하지 마세요." 그것은 사이클을 깨뜨리는 것입니다. – walkytalky