variables de instancia en @interface; cabecera vs implementación

¿Hay alguna diferencia entre declarar una variable de instancia privada en el encabezado y declararla en la implementación?

en TestObj.h

@interface TestObj : NSObject
{
    int test;
}
@end

vs en TestObj.m

@interface TestObj()
{
    int test;
}
@end

Ambos me parecen equivalentes, ¿hay alguna diferencia real entre declarar una variable de instancia en el encabezado frente a la implementación, si no, cuál es la preferida? los@interface dentro del archivo de implementación parece ser una forma de declarar propiedades privadas, ¿tiene algún otro propósito fuera de eso?

Respuestas a la pregunta(2)

Su respuesta a la pregunta