Inicializar objetos el método -(id)init

metodo-init

Imaginaos que tenemos una clase llamada Datos, con su archivo .h y su archivo .m (sí, no solo de Swift vive el hombre, ja ja ja)

Es una clase que contiene algunos datos que queremos usar en nuestra App.

Queremos tener las propiedades de esta clase Datos inicializadas con valores.

La pregunta es: ¿cómo inicializar las variables o propiedades de una clase?

El método -(id)init

Pues la respuesta es sencilla, para incializar las variables de una clase usaremos el método -(id)init

De lo que se trata es de que cuándo yo llamé  ese objeto, en este caso mi clase Datos, las variables o propiedades que tenga esta clase, estén inicializadas con valores.

Mi clase Datos tiene dos variables, una de tipo string, y otra de tipo double, si yo llamo a mi clase Datos, quiero que estas variables estén inicializadas con unos valores por defecto, independientemente de que luego durante la ejecución del programa, estos valores puedan cambiar.

Lo haría sobreescribiendo el método init de mi objeto de la siguiente manera:

- (id) init {

//Primero invocamos el metodo init de la superclase, de forma que cualquier inicialización que requiera de la clase NSObject se completa antes de que se lleven a cabo las inicializaciones especificas de la clase Datos

self = [super init];

//Se comprueba que el objeto self se haya inicializado

if (self != nil){

//Establecemos el valor de las variables o propiedades

_variableString = @"Hola";

_variableDouble = 0.1f;

}

//Se devuelve el valor de self, dependerá de la comprobación de si self se inicializó o no, si se inicializó devuelve el objeto Datos inicializado, de lo contrario devuelve nil

return self;

}

Cómo veis, primero llamamos a la super-clase, para después comprobar si el objeto self se ha incivilizado, el objeto self será nuestra clase.

Si el objeto se inicializa, entonces se inicializan nuestras variables o propiedades con el valor que nosotros queramos.

Por último se devuelve el propio objeto, si por lo que fuere, el objeto no fue inicializado, entonces se devuelve nil.

Es conveniente inicializar nuestras variables o propiedades siempre, de forma que cuándo llamemos a nuestros objetos, estos no tenga valores a nil, ya sabéis que Objective-C admite variables con valores a nil, pero no siempre es conveniente hacer esto.

About The Author
iOS Developer & Instructor at CFE Apps. Enseño a crear aplicaciones iOS a todo el que quiera aprender.

2 Comments

  • Daniel 02/12/2014 @ 15:27

    Estaba buscando sobre este tema porque estoy aprendiendo y aunque tengo un libro de objective-C estoy un poco liado con estas cosas ya que estoy empezando, y no lo tenia claro como ahora lo veo en el ejemplo.
    Me gustaría poder aprender mas, como dices y te ofreces pues te explico que estoy haciendo un juego con spriteKit y me iría bien algunas aclaraciones. El juego en iOS 7 no daba problemas, casi, pero en iOS 8 estoy mas liado y no se sostiene la física como en iOS 7, tampoco tengo claros algunos conceptos con arrays para poder almacenar todo el contenido y así poder usarlo mejor y quitar lineas de código usando métodos y clases mejor que lo que se hacer, soy autodidacta y no trabajo de nada de esto, tampoco se otro lenguaje pero me encanta y aun estoy aprendiendo, y creo que estoy avanzando bastante así que seguro que con ayuda los conceptos que no tengo claro los entendere mucho mejor.
    Te agradeceria que comentaras algo sobre lo que te digo o quizás contactar de alguna manera si quieres y así hablar sobre las posibilidades que ofreces o que opinas sobre el juego en si y que puedo hacer mejor o quizás te interese que trabajemos sobre el juntos y hacer algo de calidad desde el principio.
    Mi idea de intentar asociarme con alguien que tenga experiencia es lo que creo mas efectivo para aprender y así hacer lo que tengo pensado que son algunas apps y juegos que yo todavía no se y aparte creo que dará mucho trabajo para una sola persona, también creo que funcionaran bien en el app Store así que podríamos hablar si quieres y ver como enfocarlo y negociar como se hace y si luego hay ganancias como repartirlas etc…

    • Sergio Becerril 06/12/2014 @ 12:54

      Hola Daniel,

      Puedes tener físicas diferentes si usas un iPhone 6 o 6 Plus por el tamaño de pantalla. Otra cuestión es que no tengas activadas las Auto Layout, pues si es el caso, deberás re-programar sus restricciones acorde al tamaño de las nuevas pantallas. Que yo sepa no ha habido ningún cambio en el Framework Sprite Kit en iOS 8, es decir es el mismo Framework que iOS 7.

      Respecto a trabajar contigo en tu proyecto, de veras te lo agradezco muchísimo, pero ahora mismo estoy hasta arriba de trabajo, y no tengo tiempo para colaborar con tu proyecto.

      Mucha suerte y gracias.

      Un abrazo.

      Sergio Becerril

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.