Dos interfaces en files * .h y * .m

Perdón por mi inglés, hablemos desde mi corazón 🙂 En un proyecto en el que trabajo, noté un momento interesante.

En la interfaz declarada por el file * .h:

@interface FrontViewController : UIViewController ... @end 

Y en el file * .m encontré otra interfaz.

 @interface FrontViewController() // Private Properties: @property (retain, nonatomic) UIPanGestureRecognizer *navigationBarPanGestureRecognizer; // Private Methods: - (IBAction)pushExample:(id)sender; @end @implementation FrontViewController ... @end 

¿Por qué se necesita? ¿Y cuál es el punto? -Creo que esto es por conveniencia. ¿Sí?

Esa es una extensión de class. Por lo general, se utiliza para declarar methods y properties privadas para una class.

Lea sobre esto aquí .

Esa es una extensión de class. Le permite declarar methods y properties "privados" para una class, incluso si no tiene acceso a la fuente. El uso principal es no exponer esos methods como parte de la interfaz. A diferencia de la mayoría de los idiomas, estos methods son detectables en time de ejecución, por lo que el valor de estos está en la finalización automática de IDE, no para evitar que los consumidores de su class llamen a los methods ocultos, por lo que pongo privado entre comillas. Es posible simplemente definir methods en la implementación sin una statement, pero luego deben implementarse por encima de cualquier lugar en el que se utilicen. Declararlos como una extensión evita este problema.

Si se nombra una extensión, se convierte en una categoría que se puede usar para distribuir la implementación de la class entre varios files.

    Intereting Posts