У меня есть следующий код:Objective-C#import петля
#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;
я получаю неожиданную синтаксическую ошибку «ошибку: ожидается„)“до„ServerRequest“». Единственная причина, по которой я могу думать, что это может быть проблемой, заключается в том, что ServerRequestDelegate.h и ServerRequest.h #import друг друга. Однако я не понимаю, почему код работает с линией #import с запросом (id). Я также не понимаю, почему это синтаксическая ошибка.
Может ли кто-нибудь дать хорошее объяснение?
http://stackoverflow.com/questions/10019961/objective-c-class-directive-before-interface имеет явный пример цикла импорта и как его избежать, используя '@ class'. – bbum