Objective-C #import loop

Tengo el siguiente 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

Se compila y funciona bien. Sin embargo, si sustituyo las declaraciones de método por:

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

Recibo el error de sintaxis inesperado "error: esperado ')' antes de 'ServerRequest'". La única razón por la que puedo pensar que esto podría ser un problema es que ServerRequestDelegate.h y ServerRequest.h # se importan entre sí. Sin embargo, no entiendo por qué el código funciona con la línea #import with with (id) request. Tampoco entiendo por qué es un error de sintaxis.

¿Alguien puede dar una buena explicación?

Respuestas a la pregunta(2)

Su respuesta a la pregunta