我有以下代码:
#import <Foundation/Foundation.h>
#import "ServerRequest.h" // works even though this line is included
#import "ServerResponseRecord.h"
@protocol ServerRequestDelegate<NSObject>
-(void)request:(id)request gotResponseRecord:(ServerResponseRecord*)response;
-(void)request:(id)request gotError:(NSError*)error;
@end
它可以编译和正常运行。但是,如果我将方法声明替换为:
-(void)request:(ServerRequest*)request gotResponseRecord:(ServerResponseRecord*)response;
-(void)request:(ServerRequest*)request gotError:(NSError*)error;
我遇到了一个意外的语法错误:"error: expected ')' before 'ServerRequest'"。我能想到的唯一原因是ServerRequestDelegate.h和ServerRequest.h相互导入。然而,我不明白为什么在#import行中使用(id)request代码可以工作。我也不知道为什么会出现语法错误。
有人能提供一个好的解释吗?
@class
避免导入循环。 - bbum