¿Es necesario que un IBOutlet sea una propiedad y se sintetice?

En la mayoría de los ejemplos, veo la siguiente configuración de IBOutlets:



(Example A)

FooController.h:

@interface FooController : UIViewController {
    UILabel *fooLabel;
}

@property (nonatomic, retain) IBOutlet UILabel *fooLabel;

@end

FooController.m:

@implementation FooController

@synthesize fooLabel;

@end

Pero esto también funciona bien (aviso: no hay propiedades y no se sintetiza):



(Example B)

FooController.h:

@interface FooController : UIViewController {
    IBOutlet UILabel *fooLabel;
}

@end

FooController.m:

@implementation FooController

@end

¿Hay desventajas de definir IBOutlets como en el Ejemplo B? ¿Como fugas de memoria? Parece funcionar bien y prefiero no exponer los IBOutlets como propiedades públicas, ya que no se usan como tales, solo se usan en la implementación del controlador. Definirlo en tres lugares sin una necesidad real no me parece muy SECO (No se repita).

Respuestas a la pregunta(4)

Su respuesta a la pregunta