Ho il seguente codice:Objective-C# import ciclo
#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
Si compila e funziona bene. Tuttavia, se sostituisco le dichiarazioni di metodo con:
-(void)request:(ServerRequest*)request gotResponseRecord:(ServerResponseRecord*)response;
-(void)request:(ServerRequest*)request gotError:(NSError*)error;
ottengo l'inaspettato errore di sintassi "Errore: Previsto ')' prima 'ServerRequest'". L'unica ragione per cui posso pensare che questo potrebbe essere un problema è che ServerRequestDelegate.h e ServerRequest.h # si importano a vicenda. Tuttavia, non capisco perché il codice funzioni con la riga #import con la richiesta (id). Inoltre, non capisco perché si tratta di un errore di sintassi.
Qualcuno può fornire una buona spiegazione?
http://stackoverflow.com/questions/10019961/objective-c-class-directive-before-interface ha un esempio esplicito di un ciclo di importazione e come evitarlo usando '@ class'. – bbum