objective c - tag - ¿Pones#import s en archivos.h o.m?
pod googletagmanager (1)
SIEMPRE debería # #import
otras clases en su archivo .m
.
Si también son miembros de su clase, puede reenviarlos (utilizando la directiva @class
) en su archivo .h
.
La razón para hacer esto es porque cuando #import
un archivo .h
, solo quieres importar declaraciones , no definiciones . Al usar @class
y solo @class
en archivos .m
, está a) reduciendo los gastos generales y b) hace que el código sea más limpio.
Otra razón por la que deberías hacerlo de esta manera fue señalada por Matt Gallagher :
El razonamiento detrás de las declaraciones en los archivos de cabecera es que evita las dependencias innecesarias. es decir, Imagine Bh adelante declara que A y Bm importan Ah Entonces imagina Cm, Dm, Em y Fm importan Bh Después de todo esto, Ah cambia. Dado que A solo se declara hacia adelante en Bh, solo Bm necesita reconstruirse. Sin declaraciones hacia adelante, Cm, Dm, Em y Fm tendrían que reconstruirse si A cambia
Ejemplo:
archivo .h
:
@class BarClass;
@interface FooClass : NSObject
...
@end
archivo .m
#import "BarClass.h"
@implementation FooClass
...
@end
Me pregunto sobre el estilo Objective-C.
Tengo FooClass. [Hm] que depende de BarClass. [Hm] para su implementación (aunque no para su interfaz). Puedo #import "BarClass.h"
directamente en FooClass.m o indirectamente a través de FooClass.h. Me pregunto acerca de la elección común para esto.