Declarar un protocolo delegado

Me gustaría saber cuál es la diferencia al declarar unprotocol en la misma clase y al declararlo en un archivo separado; ejemplo:

#import <UIKit/UIKit.h>

@class MyClassA;

@protocol MyDelegate <NSObject>

@required
- (MyClassA*)myMythod;

@optional
- (void)anOtherMethod:(NSString*)ID;

@end

@interface MyClassB : UIViewController <UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, assign) id <MyDelegate> delegate;
......

Aquí declaro el protocolo delagate en el mismo archivo con MyClassB, y puedo declararlo (el delegado de protocolo) en un archivo fuente separado. ¿Cuál es la diferencia entre declararlo en el mismo archivo con la clase y en un archivo separado? ¡Gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta