I mają następujące oznaczenia:Cel C pętli #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
kompiluje i działa poprawnie. Jednakże, jeśli mogę wymienić deklaracji metody z:
-(void)request:(ServerRequest*)request gotResponseRecord:(ServerResponseRecord*)response;
-(void)request:(ServerRequest*)request gotError:(NSError*)error;
pojawia się nieoczekiwany błąd składni „Błąd: Oczekiwano«)»przed«ServerRequest»”. Jedynym powodem, dla którego mogę myśleć, że to może być problem, jest to, że ServerRequestDelegate.h i ServerRequest.h #importują się nawzajem. Nie rozumiem jednak, dlaczego kod działa z linią #import z żądaniem (id). Nie rozumiem również, dlaczego jest to błąd składniowy.
Czy ktoś może podać dobre wyjaśnienie?
http://stackoverflow.com/questions/10019961/objective-c-class-directive-before-interface ma wyraźny przykład pętli importu i jak tego uniknąć za pomocą '@ class'. – bbum