Loop de Importação-Objective-C #

Eu tenho o seguinte código:

#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

Ele compila e corre bem. No entanto, se eu substituir as declarações de método por:

-(void)request:(ServerRequest*)request gotResponseRecord:(ServerResponseRecord*)response;
-(void)request:(ServerRequest*)request gotError:(NSError*)error;

Eu recebo o erro de sintaxe inesperada "erro: esperado") "antes de 'ServerRequest'". A única razão pela qual eu posso pensar que isso pode ser um problema é que ServerRequestDelegate.h e ServerRequest.h #importam um ao outro. No entanto, não entendo por que o código funciona com a solicitação #import line with (id). Eu também não entendo porque é um erro de sintaxe.

Alguém pode dar uma boa explicação?

questionAnswers(2)

yourAnswerToTheQuestion