Lesson 7.0 – Radiografia de un Objeto (Class Files)
Hemos visto que un programa es una serie de documentos que especifican planos de Clase para los objetos que desean crear. Estos documentos son mini codigos en si. Tienen su propia logica dependiendo del tipo de Clase que esta subclasificando. Por ejemplo, cuando creas una View Controladora UITabla te daras cuenta que algunos metodos ya estan creados para tu uso en el archive .m, que es el lugar donde se almacenan los metodos.
Estructuras de un archivo .h
Como puedes ver arriba, un archivo .h indica las caracteristicas que tendra un objeto cuando sea creado desde este plano. Y mas adelante, los metodos que este implementara estaran detallados en el archive .m.
Aqui vemos este plano:
- Importa el UIKit
- declara que el interfase de esta Clase es de tipo NSObject y lo llam delegado UIApplicationDelegate
- declara una ventana, una etiqueta y Campo de texto ivars que pueden o no ser convertidos en propiedades
- uno de estos ivars es declarado como propiedad, la ventana
- uno o mas de los metodos que implementara, en este casouna IBAccion llamada click que toma un parametro de envio
Despues de esto el archive .h te permite mover el archive .m donde tu describes los metodos implementados en detalle. Revisemos como se vera la estructura basica en un archive Clase .m
viewDidLoad & otros metodos obligatorios
Siempre que se llama algun controlador de Views, estos cargan una view, por eso es que se considera obligatorio. Si la view se carga correctamente, la primera cosa que el objeto hara es buscar
Tipos de Metodos
Metodos con un valor de retorno
Como mencionamos anteriormente, hay diferentes tipos de metodos. Aquellos que devuelven algo, como un NSArray o NSString, y esos se llaman de la siguiente forma:
-(NSArray*) fetchUsersArrayFromWeb {} //lo que sea que se hace dentro de este metodo, la ultima linea debe ser: return someArray;
Un ejemplo mas util podria ser:
-(NSString*) fetchNameForPhone:(NSNumber*)telNumber;
Este metodo toma un objeto NSNumero llamado telNumero y procesa una logica que probablemente busca el telNumero en la table y encuentra el nombre correspondiente a manera de responder con ese numero. La diferencia es que se ve de la siguiente forma:
-(NSString*) fetchNameForPhone:(NSNumber*)telNumber{
//ve a conseguir el nombre de la table para ese telNumero return name;}
Void Methods / Metodos Nulos
Hay algunos metodos que simplemente llaman a otros metodos o llevan a cabo acciones y cambian objetos o propiedades pero no responden con ningun valor.
Esto quiere decir que estos metodos,
-(void) doSomething {}
Metodos IBAction
Y luego estan tambien los metodos especiales IBAction, los cuales estan atados al Constructor de Interfaces, IB (por sus siglas en ingles). Estos metodos son llamados a partir de los controles en un archive xib, como los botones:
-(IBAction) aumentarVolumen {}
Lo importante aqui es notar que las IBAcciones solo son llamadas si se hace tap en el control en la VC. Los otros 2 tipos, aquellos que devuelven un objeto y los nulos, solo son llamados si alguien los llama. Con la excepcion de los ganchos….
Threads
Los hilos se utilizan para hacer algo sin interrumpir el hilo del programa principal. Esto quiere decir, que si estas cargano un controlador de Views que creaste y el programa tiene que ir al internet a obtener una imagen, lo puedes hacer haciendo que el metodo que llama la informacion del internet, pertenezca a un hilo por aparte.
Hay otra manera interesante de hacer esto que es llamando una clase aparte a hacer el trabajo, pero veremos mas acerca de esto mas adelante en el curso.
Hooks
Los ganchos son metodos especificos que siempre son llamados. Recuerdas que mencionamos que el MVC ha sido modificado y el M-VC se ha popularizado en las plantillas mas communes? Las diferentes clases de VC tienen ciertos ganchos o metodos que son obligatorios. Ellos llevan a cabo una tarea especifica dentro de un objeto. Por ejemplo, cuando estas escribiendo tu clase de VC, por lo general siempre tendras:
-(void)viewDidLoad {}
el cual siempre es llamado en cuanto la view termnia de cargar. Existen otros ganchos tales como viewWillAppear, dealloc etc. Entre mas plantillas visites, mas iras conociendo estos metodos especificos. Por ejemplo, TVC debe mostrar celdas, por lo tanto siempre tiene:
-(void) numberOfSectionsInTable
// NOSIT que especifica el numero de secciones en tu tabla
-(void) numberOfRowsInSection
//NORIS que especifica el numero de filas en cada seccion
-(void) cellForRowAtIndexPath
// No te sientas intimidado, un index path es simplemente el numero de identificacion de una celda. La primer celda es la primera, y asi sucesivamente.
-(void) didSelectRowAtIndexPath
// DRAIP que contiene codigo especificando lo que va a suceder cuando se seleccione una celda.
Pequeno Resumen
Hasta ahora hemos visto que para crear una applicacion necesitas:
1. Prender tu mac
2. Descargar e instalar Xcode
3. Hacerte miembro del Programa de Desarroladores de Apple
4. Diagramar tu applicacion en las diferentes pantallas, indicando que pasara en cada una y que podra y hacer ver el usuario en cada pantalla, etc…
5. Lanzar Xcode y decider si quieres una:
1. Applicacion basada en Windows (el punto de partido mas basico)
2. Applicacion basada en Views, que crea una primer View Controller para ti encima de una Ventana
3. O una de muchas applicaciones basada en plantillas tales como Apps TableViewController, Apps basadas en Navegacion, etc..
4. Si (Basada en Windows) && (unicamente de 1 View) entonces puedes empezar a solo colocar cosas dentro de tu Ventana Principal.xib o Storyboard Scene.
5. Si (Basada en Windows) && (>1 View) entonces debes primero crear tu primera Clase ViewController.
6. Si(Basada en Views) entonces Xcode crea un UIVC para ti y debes lanzarte y empezar a escribir codigo.
7. Si (Basada en TableView) entonces empieza a familiarizarte con los metodos de gancho en la Clase que fue creada.
- 8. (Basada en Navegacion) entonces crea una UIVC para agregarsela.
Basicamente necesitaras crear tu primera VC y llegar a conocer sus metodos. Ahora exploraremos como crear el codigo que necesitaras en esas VC para que comience la accion.

























