0% encontró este documento útil (0 votos)
56 vistas

Simulacion Conclusion (If-El Self) C

Este documento introduce Xcode e iOS para el desarrollo de aplicaciones móviles. Explica que Xcode es el IDE de Apple para desarrollar aplicaciones iOS usando Objective-C como lenguaje de programación. Detalla los conceptos básicos de Xcode, iOS, frameworks y los pasos para crear una aplicación, incluyendo diseñar la interfaz, escribir código y compilar.

Cargado por

Daniel Oso Mendz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
56 vistas

Simulacion Conclusion (If-El Self) C

Este documento introduce Xcode e iOS para el desarrollo de aplicaciones móviles. Explica que Xcode es el IDE de Apple para desarrollar aplicaciones iOS usando Objective-C como lenguaje de programación. Detalla los conceptos básicos de Xcode, iOS, frameworks y los pasos para crear una aplicación, incluyendo diseñar la interfaz, escribir código y compilar.

Cargado por

Daniel Oso Mendz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 16

Introduccin al IDE de XCode,

Objective C e iOS
Domingo, 22 de mayo de 2011 | 6 respuestas

Curso de creacin de aplicaciones de
iOS
Hardware y Software que nos exigen
OSX (Snow Leopard al menos) actualizado a la ltima versin, para poder instalar el IDE de la
manzanita. Nos quieren obligar a comprarnos un Mac, peeero, tambin podis instalaros el VMWare
Fusion en un PC (o el VMWare normal pero sin soporte OpenGL), u Oracle VM VirtualBox sobre
Windows o GNU/Linux y descargar una imagen de OSX de la red para este software-emulador, e
inclusocrearos un Hackintosh, que no es muy caro y estn de moda jeje
XCode 4 +iPhone SDK: podis descargarlo de Internet si no tenis dinero para la licencia de
developer, aunque si queris publicar pronto una aplicacin podis daros de alta en el programa de
desarrolladores de la empresa, pagando claro!
iPhone/iPad/iPod: pues hombre, estara bien tenerlo para poder probar lo que escribamos, ya que el
simulador (no es un emulador!) que trae el IDE se comporta de manera algo distinta a como debera
serpero bueno, para empezar tampoco vamos a tirar la casa por la ventana jeje Si tienes un
dispositivo intenta instalarte el AppWizard para el siguiente paso -no te dir como conseguirlo-
Hardware de los dispositivos iOS
El iPhone 4 tiene una resolucin de pantalla de 960640 a 326 ppi.
El iPhone 3 tiene una resolucin de 480320 pxels
La resolucin del iPad es de 1024768 a 132 ppi
Habilidades que necesitamos para programar
aplicaciones de iOS
Programar en Objective C: programar aplicaciones de iPhone en XCode es, bsicamente, empezar
a conocer cmo funciona Objective C y cmo asociar los objetos del Interface Builder a nuestro
cdigo. Para eso existen cientos de tutoriales, algunos ms famosos que otros como Masters of the
Void, pero lo mejor es seguir un libro gratuito de la propia empresa (en el apartado de
desarrolladores) o ir a una biblioteca y pillarse libros como Objective C for dummies, iPhone
application development for dummies, y luego algo ms serio como iOs4 Programming Cookbook de
OReilly, ya que contienen multitud de ejemplos y trucos para desarrollar todo lo que
deseemos/necesitemos.
Hay un libro de la web de MacProgramadores bastante bueno sobre Objective C con especial nfasis
en su origen (NeXT) y XCode, lo han borrado de la web, pero seguro que lo encontris
Introduccin a XCode e iOS4 SDK
Conceptos bsicos:
XCode
Xcode es el IDE que nos ofrece Apple para desarrollar aplicaciones de iOS.
El SDK (Software Development Kit) incorpora herramientas para el desarrollo (entre ellas, el
simulador de iPhone/iPad).
El lenguaje de programacin es Objective-C
Simulador de iOS: Permite simular tanto iPhone como iPad en nuestro Mac.
Interface Builder: Editor visual para disear interfaces de usuario para nuestras aplicaciones.
Instruments: Herramienta de anlisis que nos ayuda a optimizar y monitorizar la aplicacin
Sistema Operativo iOS
El Sistema Operativo de los dispositivos de Apple (iOS), est formado por un conjunto de capas,
que conforman el conjunto de servicios ofrecidos por el dispositivo. Arquitectura:

Cada capa de la arquitectura est compuesta por un conjunto de frameworks
La capa Core OS es la base del sistema operativo. Se encarga de realizar la gestin de memoria, el
sistema de ficheros, conexin a la red y procesos que interactan con el hardware
Core Services nos permite el acceso a los servicios bsicos, tales como la agenda, el acceso a la
base de datos, preferencias, conexin a servidores y procesamiento de URLs, etc
La capa Media nos permite la ejecucin de tareas multimedia. Entre ella el acceso al Audio, OpenGL,
Imgenes y PDF, Animaciones, etc
Cocoa Touch nos permite acceder al acelermetro, los eventos y controles tctiles, la jerarqua de
vistas, alertas, etcgestiona la interaccin visual con el usuario
Novedades de iOS4:
Multitarea: mientras ejecutamos una aplicacin, al pulsar el botn home no se cierra sino que
pasa a segundo plano, pueden continuar ejecutndose o pueden suspenderse
Notificaciones Locales: completa el sistema de notificaciones push (desde un servidor remoto
que nosotros mismos podemos crear)
Core Motion: conjunto de interfaces para acceder a toda la informacin basada en el
movimiento (giroscopio ,motion-based)
Data protection: sistema integrado de encriptacin
Soporte para pantalla de alta resolucin (adaptacin a la antigua)
Leer ms >
Frameworks
Un framework es un conjunto de libreras que nos permite aadir una funcionalidad concreta a
nuestra aplicacin
Por defecto, cuando creamos un proyecto, tenemos los frameworks esenciales para el
funcionamiento bsico
Por ejemplo, para usar bases de datos SQLite usaremos su framework, simplemente con copiar el
directorio descargado de su web, aunque en la versin de XCode4 ya viene integrado, tambin
haremos lo mismo con Cocos2D
Cocoa Touch: conjunto de frameworks orientados a objetos que permiten el desarrollo de
aplicaciones nativas para iOS
Crear una aplicacin
Pasos
1. Abrir XCode y crear un proyecto
2. Disear la interfaz de usuario
3. Escribir el cdigo asociado de la aplicacin
4. Compilar, ejecutar y probar (vuelta al paso 2)
5. Medir y ajustar el rendimiento de la aplicacin
6. Producir y publicar la aplicacin
Tipos de proyecto
Cocos 2d: para crear juegos (necesita el framework Cocos2D),lo veremos en otro curso, de
programacin de videojuegos para iPhone
Navigation-based : presentan la informacin de forma jerrquica usando mltiples vistas (diseo de
pantallas)
Open GL : igual que cocos, adems de juegos podemos crear cualquier tipo de aplicacin que
represente imgenes, animaciones o grficos 3D
Split View-based : Aplicaciones enfocadas para iPad que muestran ms de una vista en la pantalla
al mismo tiempo (un control listado y una vista detalle de elementos normalmente)
Tab Bar : presentan una interfaz de radio que permite al usuario elegir entre varias opciones
Utility : aplicaciones que presentan una vista principal y permiten que el usuario acceda a otra vista
para realizar personalizaciones bsicas
View-based : una vista simple para implementar la interfaz
Window-based : plantilla universal (cualquier dispositivo con iOS) que sirve de punto de partida con
un delegado y una ventana. til para aplicaciones con jerarqua propia
Recordar que no todos los tipos de aplicaciones pueden ser universales (para cualquier iDevice) y las que lo
son tienen diferentes diseos de interfaces de usuario en subdirectorios con su nombre.
Interfaz de XCode

XCode4: editor en una ventana
XCode4: Interface Builder
XCode4: Git integrado
Tipos de ficheros de un proyecto
Info.plist: como todos los plist, es un XML (introducido por NeXT) constitudo de propiedades de
configuracin en UTF-8
Ficheros.h: declaraciones de interfaces ,clases y atributos
Ficheros.m: implementacin de clases y mtodos definididos en los .h (aunque no necesariamente
requieren un .h)
Ficheros .pch: cabeceras precompiladas que se aaden a las clases
Ficheros de objetivo: resultado de la compilacin de un conjunto de ficheros de cdigo, puede ser
una librera o una aplicacin. Un conjunto de objetivos forman un producto. Lo utilizaremos para
publicar una aplicacin en la tienda
Perfiles de compilacin
Depuracin: incluye la opcin de depuracin al compilar con gcc, es ms lenta pero encuentra
errores lgicos. Se puede depurar en el editor de texto, mini-depurador, depurador y en la consola
[(gdb)]. Opcin: GCC_GENERATE_DEBUGGING_SYMBOLS. Podemos usar breakpoints.
Mientras el programa est siendo depurado podemos modificarlo (como pasaba en VisualBasic y
otros lenguajes! :D) : cambiar el n y tipo de argumentos de una funcin o mtodo que est en
la pila,el tipo del valor de retorno o el nombre de una funcin o mtodo tambin en la pila, as como
cambiar el tipo de las variables estticas, un fichero NIB, aadir clases o cambiar sus mtodos
Leer ms >
Lanzamiento: mayor rendimiento de la app, tamao de objeto final compilado menor.
Distribucin: como el anterior pero necesita un certificado o firma de Distribucin vlida (con apple
hemos topado xD, aunque podemos arreglar esto con algn que otro truco de Cydia). Se aade
meta-informacin necesaria para ser validada en la tienda.
Introduccin a Objective C
Qu es?
Pequeo set de extensiones de ANSI C
Sus aadidos a C estn basados en Smalltalk, uno de los primeros lenguajes orientados a objetos
Diseado para dotar a C de toda la potencia de la orientacin a objetos
Clases
Sintxis normal de creacin de clases: interfaz (.h) + implentacin (.m)

Ejemplo de clase Persona.h:
@interface Persona : NSObject {
NSString *nombre;
NSString *apellidos;
}
-(NSString*) nombre;
-(NSString*) apellidos;-(void) setNombre: (NSString *) _Nombre;
-(void) setApellidos: (NSString *) _Apellidos;

+(NSString *) soyMetodoEstatico: (NSString *) mensaje;
@end
Ejemplo de clase Persona.m:
#import "Persona.h"
@implementation Persona
-(NSString*) nombre {
return self.nombre;
}
-(NSString*) apellidos {
return self.apellidos;
}
-(void) setNombre: (NSString *) _Nombre {
self.nombre = _Nombre;
}
-(void) setApellidos: (NSString *) _Apellidos{
self.apellidos = _Apellidos;
}
+(NSString) soyMetodoEstatico: (NSString *) mensaje{
return mensaje;
}
@end
Ejempo de funcin que toma datos de la clase padre de la que hereda:
- (id) init {
if ( self = [super init] ) {
[self setNombre:@"nombre por defecto"];
[self setApellidos:@"apellidos por defecto"];
}

return self;
}
self es la propia instancia del objeto y super es la clase de la que hereda
Declaracin de un mtodo:

A travs del corchete accedemos a un objeto, que es el primer parmetro, el segundo es la llamada
al mtodo, es como hacer
$this->mtodo en PHP , o puntero_a_clase -> mtodo , en C / C++,Java.
Por ejemplo , un mtodo sin entrada
[object method];
Con entrada:
[object methodWithInput:input];
Con salida:
output = [object methodWithOutput];
Con entrada y salida:
output = [object methodWithInputAndOutput:input];
Recordar que si queremos especificar una funcin con varios parmetros se ponen dos nombres,
uno para el nombre clave de llamada y otro para el nombre interno del parmetro, el primer nombre
de nombre clave no se pone, ejemplo:
-(void) miFuncion: (int)parametro1 nombre1: (bool) parametro2 nombre3:(NSString*) parametro3;
a esta funcin accedemos as, ejemplo con datos:
[miObjeto miFuncion:7 nombre1:true nombre3: @cadena
Fijaros que una cadena siempre se precede de una arroba.
Propiedades de una clase: (@property)
permiten generar automticamente mtodos de acceso para los atributos de una clase, podemos
sobrecargar los mtodos setter & getter si no usamos las especificaciones por defecto de una
propiedad, para saber cul nos conviene primero debemos ver la gestin de memoria. Por defecto, el
setter se aade automtica a la propiedad definida como setNombre_variable
(set+UCase(nombre_variable)), y el getter es el nombre de la variable atributo tal cual, en Persona.h
el setter es setNombre y el getter nombre. Fcil.
Para que podamos usar las propiedades es obligatorio inicializarlas con @synthesize en Persona.m
(la implementacin de la clase),este genera los setters y getters automticamente. Una vez hecho
adems podemos especificar en esta lnea de sintetizacin el nombre local del acceso o accesser,
algo como@synthesize nombre = _nombre_local;
Ver ms >
Gestin de memoria!: de lo ms importante en Objective C
Con el mtodo dealloc liberamos memoria utilizada en las instancias de nuestras clases, lo vamos a
sobrecargar para hacer release de todas las instancias de objetos que hayamos creado
Se debe liberar por completo el propio objeto tambin ,con [super dealloc] .
Debemos liberar las variables de tipado fuerte
Para aprovechar la memoria tenemos que crear nuestro propio recolector de basura, algunos ven
esto como muy buena idea y otros no son partcipes de que el lenguaje no tenga las bondades de
Java
Para gestionar qu variables estn siendo utilizadas en memoria, tenemos lo que se llama el
contador de referencia de Objective C, slo tenemos que especificar qu hacer con las variables al
asignarlas, crearlas, copiarlas, pasarlas por parmetro, etc. y la ejecucin del programa hace el resto.
Con alloc inicializamos memoria en funcin del tipo o clase de una variable, por ejemplo, cuando
declaramos una variable de tipo NSNumber con una instruccin como esta:
NSNumber *number = [[NSNumberalloc initWithFloat:8.75;
lo que pasa internamente es que el contador de referencias se pone a 1.
Con retain aumentamos el contador de referencias en uno, por ejemplo si deseamos liberar en un
contexto la variable pero no queremos que se pierda la variable porque se usa en otro contexto, por
ejemplo:
-(void) setNombre: (NSString *) _Nombre {
[self.nombre autorelease;
self.nombre = [_Nombre retain;
}
Usando autorelease se libera al objeto de manera diferida, es decir, es posible usar la variable de la
primera lnea durante un tiempo ms, le dice al compilador que la variable self.nombre se
decremente al salir del contexto de la clase de la funcin setNombre, despus le asigna un nuevo
valor, el del parmetro, pero a este le dice que lo retenga aunque se borre fuera, para que sea
gestionado desde la clase.
Con release se decrementa el contador en una unidad, si tiene valor 1 ,se borra la variable, es decir,
le decimos al sistema que no la necesitamos y ste llama a dealloc automticamente (primer punto)

Ojo entonces, si por ejemplo creamos un mtodo en una clase para asignar un valor y hacemos que
use release para luego hacer retain con el nuevo valor que le pasamos, siendo este no una variable
sino una llamada de una funcin, algo as:
________
(void) setNombre: (NSString*) _Nombre {
[self.nombre release;
self.nombre = [_Nombre retain;
}

persona* ego = [[personaalloc init];

[ego setNombre:[ego nombre];
________
al llamar a la funcin setNombre, primero se libera el objeto self.nombre antes de retenerlo, por lo
que ya no hay espacio reservado en memoria para esta variable y aquella pasa a estado incoherente
ya que el valor que le hemos pasado es precisamente el que hemos liberado, para solucionarlo
ponemos autorelease en lugar de release.
Ahora podremos saber qu tipo de gestin de memoria asignarle a una propiedad, por ejemplo para
el nombre en nuestra clase Persona.h:
@property (retain) NSString* nombre;
al poner retain hemos declarado que el setter (funcin como setNombre pero automtica) debe hacer
retain sobre el valor de entrada. Pero podemos especificar con setter=setNombre nuestra propia
funcin ;)
A veces tenemos que tener cuidado con lo que liberamos de la memoria, no podemos dejar todo
en autorelease porque al pasar la referencia de una variable entre funciones es posible que se libere
antes de tiempo, sin embargo de esto nos daremos cuenta cuando el simulador haga CRASH! jaja
Variables
Tipado dbil: int, bool, float, etc.
Tipado fuerte: objetos como NSString, NSNumber, etc.
ejemplos de mtodos con tipos distintos:
- (int) multiplica: (int)a por:(int)b {
return a * b;
}

- (NSString *) cadenaResultado: (int)resultado {
NSString *res = [NSString stringWithFormat:@"El resultado es: %d", resultado];

return res;
}

int resultado = [self multiplica:2 por:3];
NSString *cadena = [self cadenaResultado:resultado];
NSLog(@"%@", cadena); //devuelve 6
Un protocolo (@protocol) permite que la lista de mtodos que contienen se puedan implementar por
cualquier clase, puede especificarse al crear una clase en su definicin de la clase que hereda de
otra
@protocol MyProtocol
- (void)requiredMethod;
@optional
- (void)anOptionalMethod;
- (void)anotherOptionalMethod;
@required
- (void)anotherRequiredMethod;
@end

@interface ClassName : ItsSuperclass < protocol list >
Otro mtodo para depurar es usar el log, la funcin NSLog(cadena) usa el mismo formato que un
printf, recordar el formato:
NSLog(@La fecha y hora actual es %@, [NSDatedate );
XCode Organizer
Una vez creada la aplicacin, si queremos usarla en un iDevice, tenemos que desplegarla (necesita
certificado), conectar el dispositivo por USB y probar! Pero tambin podemos usar el simulador
,aunque no refleja el comportamiento exacto (real) de la aplicacin si que sabremos si funciona o no
:)

Consejos
Disear como un ingeniero y producir como un artista: echad mano de vuestro amigo el arquitecto de
informacin para encontrar la mejor manera para guardar los datos, no es lo mismo una base de datos en
SQLite que un conjunto de ficheros XML.
Hay que conocer el flujo de la informacin en el sistema de aplicaciones, por ejemplo un sistema de
etiquetas debe ser recurrente en cuanto a que hay tags que se repiten, la forma ptima de hacer esto
es como lo hace WordPress o algunas aplicaciones web si lo prefieres. Debemos consultar a nuestro
amigo experto en marketing para el nombre del programa, as ser el dominio para publicarlo,
tambin nos aconseja qu tipo de caractersticas son viables en cuanto a lo que el pblico demanda
y nos da su perspectiva como experto lo bonito, barato y bueno. Efectivamente, necesitamos conocer
cmo construir diagramas pero no son indispensables, aunque sera ideal disear previamente la app
con UML
Beta tester: antes de empezar si quiera a pensar en querer programar algo para iOS ,lo primero que
debemos hacer es conocer los dispositivos, el iOS y OSX, todos los widgets del sistema operativo,
as que al menos tenemos que haber probado todas las aplicaciones antes mencionadas, aunque
sea en el ifn de un amigo, no vale haberlo visto en vdeo, tenemos que tocar la esencia de la magia
de esta tecnologa para sentir qu queremos hacer realmente.
Otros tutoriales para conocer el IDE XCode 3: nos sirve para empezar.
Tutorial 1 Introduccin al iphone sdk
Tutorial 2 : INTERFACE BUILDER
Ahora que conocemos el IDE de la mano de Noemi gracias a sus tutoriales de Youtube, vamos a seguir un
poco ms adelante, tenemos la ayuda necesitamos aqu:
Apple Dev Forum
iPhoneSDK (moderado por Erica Sadun)
iPhoneSDKForum
iPhoneDev Forums
iPhoneSB
SQLite para iPhone!: recordar cmo se creaban aplicaciones con XCode que usen bases de
datos SQLite, se trata de un nico fichero que podemos fcilmente exportar ya que utiliza
instrucciones SQL.
Podemos seguir el siguiente tutorial de icodeblog.
Tutoriales para empezar a programar juegos con Cocos2D
Ejercicios (Deberes :)
1. Ejercicio 1: crear un proyecto tipo View-based, crear una clase Persona y otra clase Usuario,
establecer propiedades en las clases asociadas a sus atributos, una clase Usuario debe tener un
atributo que sea una clase Persona.
2. Ejercicio 2: Crear un NSArray e inicializarlo con clases NSNumber, luego mostrarlo con NSLog
3. Ejercicio 3: Crear un NSMutableArray e inicializarlo con clases Persona, aadir a dicha clase la
funcin (sobrecargada) description para que NSLog pueda mostrar el contenido de todos sus
atributos
Para corregirlo podis envirmelo con el formulari

También podría gustarte