¿Desde cuándo es posible declarar propiedades Objective-C 2.0 en una categoría?

Siempre pensé que no se puede declarar una propiedad de objeto en una categoría. Hasta que mi compañero lo hizo en el código de nuestra aplicación, y pareció funcionar.

Fui a SO y Google atracones para tratar de explicarle que no, las categorías de Objective-C solo se pueden usar para agregar métodos, no propiedades. Encontré preguntas como:

Establecer una nueva propiedad en la implementación de interfaz de categoría (mira la respuesta aceptada)¿Puedo agregar una propiedad para un método que no está en mi categoría?

Pero luego encontréeste enlace en el sitio de Apple que contiene lo siguiente sobre la declaración @property:

Una declaración de propiedad comienza con la palabra clave @property. @property puede aparecer en cualquier lugar de la lista de declaración de métodos que se encuentra en la interfaz @ de una clase. @propiedadtambién puede aparecer en la declaración de un protocolo o categoría. (énfasis añadido)

Sé que esto no funciona:

@interface MyClass ()
NSInteger foobar;
- (void) someCategorizedMethod;
@end

Pero esto compila:

@interface MyClass ()
@property NSInteger foobar;
- (void) someCategorizedMethod;
@end

Mi pregunta es (a) ¿cuál es la mejor práctica aquí? y (b) ¿es esto algo nuevo en Objective-C 2.0 y, en lugar de usar un iVar "real", simplemente utiliza almacenamiento asociativo detrás de escena para que esto funcione?

Respuestas a la pregunta(3)

Su respuesta a la pregunta