Eso es un class extension. Puede usarlo para hacer declaraciones que no desea que estén en el archivo .h
.
Esto fue utilizado por muchos desarrolladores, incluso antes, que agregaron manualmente la extensión en el archivo .m
. Así que supongo que Apple incluyó esto en la plantilla porque se usa ampliamente y se considera una buena práctica.
De hecho, el archivo .h
solo se debe usar para hacer declaraciones que se utilizarán desde otros archivos. Es posible que deba declarar algunas propiedades, métodos o constantes que solo se utilizarán dentro del archivo .m
. Para esas declaraciones, es mejor hacerlas en la extensión de clase.
Así que para responder a sus preguntas:
- ¿Es esta @interface adicional requerida ... si tengo un archivo .h separado?
No, no es obligatorio, pero es una buena práctica.
- ¿Por qué esto no aparece en iOS 5 proyectos pre?
Incluso si esto era una práctica comúnmente utilizada, que no estaba incluido en la plantilla.
- ¿Puedo usar esto en vez de tener un archivo .h separado?
No. La extensión de clase no reemplaza el archivo .h
donde usted tiene que declarar el "público" interfaz de su clase .
- ¿Cuál es la mejor práctica para esto en el futuro?
Usted debe poner en la extensión de clase todas las declaraciones que no necesitan ser visibles fuera del archivo .m
.
para encapsulación. – janusbalatbat
posible duplicado de [Diferencia entre definición de interfaz en .h y archivo .m] (http://stackoverflow.com/questions/3967187/difference-between-interface-definition-in-h-and-m-file) –