¿Dónde debo inicializar las variables en el objetivo c?

En el objetivo c, ¿debería sobrescribir el método init para inicializar mis variables? Si las variables son propiedades, ¿puedo acceder a ellas de la forma habitual para establecer su valor inicial?

preguntado el 22 de mayo de 12 a las 15:05

Debe anular el init método con el suyo propio (si usa init), pero siempre llame al super versión ante el cuerpo propio. Puede inicializar variables en viewDidLoad si está escribiendo un controlador de vista. Cuando inicializas, las variables pueden (o no) ser importantes. -

4 Respuestas

En el objetivo c, ¿debería sobrescribir el método init para inicializar mis variables?

Si. Específicamente, los inicializadores designados.

Su subclase también puede especificar otra etapa de construcción (por ejemplo, viewDidLoad). Además, la memoria del objeto se pone a cero cuando se asigna, por lo que no necesita configurarlos explícitamente en 0/nil (a menos que lo encuentre más legible).

Si las variables son propiedades, ¿puedo acceder a ellas de la forma habitual para establecer su valor inicial?

Debe evitar el uso de métodos/accesorios de instancia del objeto y acceder a ivars directamente en estados parcialmente construidos (en particular, el inicializador y dealloc). Hay una serie de efectos secundarios que querrá evitar: Ejemplo aquí;

contestado el 23 de mayo de 17 a las 11:05

puede inicializar sus variables en el método viewDidLoad de un controlador de vista.

contestado el 22 de mayo de 12 a las 15:05

Las variables declaradas en la interfaz de clases se inicializarán automáticamente con su valor predeterminado, 0 para valores integrales y nil/NULL para clases y punteros. Si necesita inicializar las variables a otros valores, debe anular un punto de entrada garantizado para su clase. Una clase personalizada que hereda de NSObject por ejemplo, simplemente anulará init. Si está trabajando con un controlador de vista cargado desde un NIB archivo, entonces podría anular initWithCoder: or – awakeFromNib. Siempre debe consultar la documentación de la clase de la que hereda y encontrar el inicializador designado para esa clase. A veces necesitará establecer un método de inicialización común y llamarlo desde varios inicializadores. Además, si tiene una variable que también es una propiedad, se recomienda que establezca la propiedad y no la variable directamente.

contestado el 22 de mayo de 12 a las 18:05

Además, si tiene una variable que también es una propiedad, se recomienda que establezca la propiedad y no la variable directamente. Por qué ?? - en mi camino133

¿Debo sobrescribir el método init para inicializar mis variables?

Variables de instancia: sí, aunque ya están inicializadas de forma predeterminada en 0/nil/false.

Si las variables son propiedades, ¿puedo acceder a ellas de la forma habitual para establecer su valor inicial?

Sí tu puedes. Apple lo desaconseja debido al peligro de que una subclase haya anulado el descriptor de acceso establecido para hacer algo inesperado. En la práctica, esto rara vez es un problema.

contestado el 22 de mayo de 12 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.