iphone - guidelines - uicontrol swift
¿Debo importar UIKit en cada archivo que codifico? (3)
Estoy programando para el iPhone y me pregunto si debo incluir UIKit en cada archivo que codifique o si hay una regla mejor para saber cuándo hacerlo y cuándo no.
¡Gracias!
Debe importarlo en el archivo .h de cualquier clase que lo necesite. Esto es cierto, a menos que la clase extienda otra clase que la importe, entonces no es necesario. Probablemente no quiera hacer nada más complejo, ya que todas las aplicaciones de iPhone vincularán la biblioteca. Si estuviéramos hablando de una tercera parte o de una biblioteca menos común, entonces deberías tener cuidado al respecto. Para evitar problemas de reutilización de código.
Debe utilizar el UIKit cuando necesite componentes GUI. Pero no necesita importar esta biblioteca si ya está definida en Prefix.pch:
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif
Te permite importar estas bibliotecas para todo tu proyecto actual.
Si bien el archivo pch es útil para precompilar encabezados para usted, realmente recomiendo que los archivos importen lo que usan. Eso hace que sea mucho más fácil comprender las dependencias y mucho más fácil reutilizar el código, incluida la reutilización en todas las plataformas (iPhone frente a Mac).
Con eso en mente, la respuesta es que no debe importar UIKit.h a cada archivo. Debería importarlo en cada archivo que use UIKit. Esa debería ser tu clase de Vista y Controlador. Las clases de modelos casi nunca deben usar UIKit. Generalmente deberían importar Foundation.h. Seguir esta regla facilitará que mueva sus objetos a otros proyectos que pueden tener un código diferente en el archivo .pch y que sea más fácil reutilizar sus clases de modelo tanto en iPhone como en Mac.
Normalmente tampoco recomiendo que importe UIKit.h o Foundation.h en subclases de sus propias clases. Por lo general, solo importo UIKit, AppKit o Foundation al archivo de encabezado de más alto nivel en mi código. Por ejemplo, si tengo una subclase UIView llamada MYAbstractView que importa UIKit.h (para incluir la definición de UIView), y luego agrego una subclase MYConcreteView, solo importaría MYAbstractView.h.
Tenga en cuenta que UIKit y AppKit ya importan Foundation, por lo que no hay razón para importar ambos.