SlideShare una empresa de Scribd logo
2 - OBJECTIVE-C
Curso de desarrollo de aplicaciones móviles para iPhone y iPad


                 endika.gutierrez@urbegi.com
                   alex.rayon@urbegi.com

                                      Urbegi Learning
                                         Contents
OBJECTIVE-C

• Objective-C es el lenguaje empleado por apple para todas sus
 plataformas. OS X e iOS

• Es   un lenguaje orientado a objetos

• Basado     en C. De hecho es un superconjunto de este

  • Compatible     con librerias de C

• Sintaxis   inspirada en Smalltalk
OBJECTIVE-C 2

• Data   de principios de los 80

 • Uno    de los primeros lenguajes orientados a objetos

• Adoptado    por Steve Jobs para su uso en el sistema operativo
 NeXTStep

 • Posteriormente    dio lugar a OS X

 • Todavía  se conserva el prefijo ‘NS’ en muchas de las clases
   del sistema
OBJECTIVE-C 3
• Es   un lenguaje de programación muy verboso

  • Existen   métodos que pueden llegar a ocupar varias lineas

• Es   muy raro el uso de excepciones aunque existen

• Pese   a ser compatible con C difiere mucho en su sintaxis

• Es   un lenguaje de Tipado dinámico

  • El
     comportamiento se decide en la fase de ejecución y no
   en la de compilación
SINTAXIS DE
                       OBJECTIVE-C

• En   Objective-C no se llaman funciones

    • Se   pasan mensajes entre objetos

•   [objeto mensaje];

    • Equivalente   en Java a

•   objeto.mensaje();
SINTAXIS DE
                       OBJECTIVE-C 2
•   [objeto mensaje];

    • Los      mensajes van entre []

      • Se    pueden anidar llamadas siempre que estas vayan entre
           corchetes:

           •   [[objeto mensaje] otroMensaje];

    • El   método a ejecutar se resuelve en tiempo de ejecución
SINTAXIS DE
                     OBJECTIVE-C 3

• Los   parametros quedan intercalados

•   [objeto mensaje:param1 otroParam:param2];

    • Equivalente   en Java a

•   objeto.mensaje(param1, param2);
SINTAXIS DE
                     OBJECTIVE-C 4
• También      se pueden anidar llamadas en los parametros
    •   [objeto mensaje:[usuario nombre]
              otroParam:[lista objectAtIndex:0]];


• Equivalente     en Java a
•   objeto.mensaje(usuario.nombre(), lista[0]);


• En   Objective-C se suelen generar llamadas a funciones muy
    verbosas
SINTAXIS DE
                   OBJECTIVE-C 5
• El    receptor del mensaje puede ser nil

  • Equivalente   a null en Java

  • Es    posible mandar un mensaje a nil sin que se produzca
       errores ni NullPointerException

  • Estas   llamadas devuelven 0 ó nil ó NO

• ¡Elpaso de un mensaje a un objeto que no pueda responderlo
  dará una excepción!
TIPOS BÁSICOS


• Los   objetos de Objective-C siempre se manejan con punteros

 • El   tipo genérico para cualquier objeto es id

   • Equivalente   a void* en C/C++
TIPOS BÁSICOS 2

• Los   tipos básicos son compartidos con C

•   int, float, doble, long...

• Además      incluye nuevos tipos

    • Los   valores booleanos son del tipo BOOL

      • Pueden   tomar los valores YES y NO
TIPOS BÁSICOS 3


•   self representa a la instancia actual

    • Similar   a this en Java o en C++

•   super representa la clase padre de la actual

    • Similar   a super de Java
TIPOS BÁSICOS 4



• Todos   los objetos en Objective-C heredan de la clase
 NSObject

 • Similar   a la clase Object de Java
TIPOS BÁSICOS 5

• Objective-C   posee clases para las estructuras básicas de datos

  •   NSString y NSMutableString para Cadenas de texto

  •   NSArray y NSMutableArray para Listas

  •   NSDictionary y NSMutableDictionary para Mapas

• Están   diferenciados los objetos mutables de los inmutables
CADENAS DE TEXTO

•   NSString y NSMutableString manipulan cadenas de
    texto

    • Laprimera de ellas no se puede modificar el contenido.
     La segunda sí.

    • Las   cadenas de texto se pueden definir con @”texto”

      • Para   diferenciarlas de las cadenas de C ”texto”

    • Ejemplo: NSString *texto = @”un texto”;
DEFINICIÓN DE
                       CLASES

• Interfaz   e implementación separados en dos ficheros

• Como     en C++

  • .h   para la interfaz

  • .m   para la implementación
DEFINICIÓN DE
                      CLASES
• Sintaxis   de definición de clases

• Ficheros .h

 @interface Clase : Superclase
 ...definición...
 @end
DEFINICIÓN DE
                      CLASES
• Sintaxis   de implementación de clases

• Ficheros .m

 @implementation Clase
 ...implementación...
 @end
DEFINICIÓN DE
                           CLASES
• Los    métodos de clase se definen así:
  •    - (ClaseRetorno *)metodoConParametro:(ClaseParam1 *)param1
                                 parametro2:(ClaseParam2 *)param2
                              otroParametro:(ClaseParam3 *)param3;



• Elsímbolo - antes del método indica que es un método de
 instancia

• Elsímbolo + antes del método indica que es un método de
 clase
REFERENCIAS A
             CLASES EXTERNAS
• Se   incluyen cabeceras con #import

  •A diferencia de los #include de C evita que una misma
   cabecera se incluya dos veces

• Laimplementación de la clase deberá importar la interfaz de
 la misma

• Lainterfaz de la clase debará importar las clases que se vayan
 a necesitar. Cómo mínimo la clase padre.
VARIABLES DE
                     OBJETO
• Definidas   en la interfaz de la clase entre {}

 @interface Clase : Superclase {
   int      _variable1;
   float    _variable2;
   NSArray *_unaLista;
 }
 @end
VARIABLES DE
                   OBJETO
• Normalmente   las variables de instancia llevan un _ por
 delante para diferenciarlas de las variables locales

 @interface Clase : Superclase {
   int      _variable1;
   float    _variable2;
   NSArray *_unaLista;
 }
 @end
EJEMPLO PERSONA.H

#import <Foundation/Foundation.h> // incluye la definición de
los objetos básicos

@interface   Persona : NSObject {
  NSString   *_nombre;    // atributos
  NSString   *_apellido;
  int         _edad;
  float       _altura;
  NSArray    *_habilidades;
}

- (void)saluda;

@end
EJEMPLO PERSONA.M

#import “Persona.h” // incluye la interfaz

@implementation Persona

- (void)saluda
{
    NSLog(@”Hola, me llamo %@.”, _nombre); // NSLog funciona
como printf. %@ imprime el valor de un objeto
}

@end
PROPIEDADES


• Laspropiedades definen el acceso a las variables de los
 objetos

  •   Equivalente a los Getters y Setters de Java

  • Se   acceden como objeto.propiedad
PROPIEDADES 2

• Se   definen en la interfaz como
•   @property (nonatomic, copy) NSString *   nombre;


•   nonatomic   indica que el setter no debe ser thread-safe
•   copy   indica que se debe copiar el objeto en el setter

• Otras    opciones son strong y weak que veremos en el
    capítulo de gestión de memoria.
PROPIEDADES 3

• Se   definen en la implementación como
•   @synthesize nombre = _nombre;


•A    la derecha de la igualdad indicamos la variable en la que
    queremos que se almacene el valor (Opcional)

• Veamos    un ejemplo con propiedades
EJEMPLO 2
                  PERSONA.H
#import <Foundation/Foundation.h> // incluye la definición de
los objetos básicos

@interface Persona : NSObject
// propiedades
@property (nonatomic, copy) NSString *nombre;
@property (nonatomic, copy) NSString *apellido;
@property (nonatomic) int             edad;
@property (nonatomic) float           altura;
@property (nonatomic, copy) NSArray *habilidades;

- (void)saluda;

@end
EJEMPLO 2
                 PERSONA.M
#import “Persona.h” // incluye la interfaz

@implementation Persona
@synthesize nombre = _nombre;
@synthesize apellido = _apellido;
@synthesize edad = _edad;
@synthesize altura = _altura;
@synthesize habilidades = _habilidades;

- (void)saluda
{
    NSLog(@”Hola, me llamo %@.”, self.nombre); // NSLog
funciona como printf. %@ imprime el valor de un objeto
}

@end
CONSTRUCTORES


• La   creación de objetos en Objective-C se hace en dos etapas

  •1   - Reserva de la memoria alloc

  •2   - Inicialización init
CONSTRUCTORES 2



• Ejemplo    de creación de la clase Persona del ejemplo
 anterior:
 •   Persona *pablo = [[Persona alloc] init];
CONSTRUCTORES 3

• Podemos  sobrecargar el método init para personalizar la
 creación del objeto

- (id)init
{
    self = [super init]; // También debemos llamar al
constructor padre
    if (self) {
        // Inicialización del objeto
    }
    return self;
}
CONSTRUCTORES 4


• El
   método init puede recibir parametros para la
 construcción:
  •    Persona *pablo = [[Persona alloc] initWithName:@”Pablo”
                                              surname:@”Picasso”];
CONSTRUCTORES 5

• Algunas   clases poseen métodos estáticos para crear los
    objetos en una única llamada:
•   NSArray *lista = [NSArray arrayWithObjects:@”Pablo”, @”Juan”,
    @”Pepe”, nil];


    • Estas   llamadas no actuan igual que alloc   init.


      • Veremos    las diferencias en el capítulo de gestión de
        memoria
ESTRUCTURAS DE
                 DATOS
• EnObjective-C estan diferenciadas las listas y mapas que
 son editables y las que no

• Losobjetos inmutables se deberán indicar todos los objetos
 en el momento de su creación
 •   [NSArray arrayWithObjects:@”Pablo”, @”Juan”, @”Pepe”, nil];


• Objective-C no tiene sobrecarga de operadores por lo que
 todas las operaciones son métodos
ESTRUCTURAS DE
             DATOS - NSARRAY

• Las   clases para la gestión de listas son NSArray y
 NSMutableArray

  • Obtener    un objeto de la lista:
   - (id)objectAtIndex:(NSUInteger)index;


  • Añadir   un objeto a la lista:
   - (void)addObject:(id)object;
ESTRUCTURAS DE
          DATOS - NSARRAY 2
• Para   la contrucción de arrays existen diversos métodos
+ (id)arrayWithObject:(id)object; // Array con un único objeto

+ (id)arrayWithObjects:(id)object, ...; // Array con una lista
de objetos separados por coma y acabados en nil

+ (id)arrayWithObjects:(const id*)object
                 count:(NSUInteger)count; // Array con una
lista de objetos

+ (id)arrayWithArray:(NSArray)array; // Copia de otro array
ESTRUCTURAS DE
         DATOS - NSARRAY 3
• Para
     la contrucción de arrays mutables existen otros
 métodos



+ (id)arrayWithCapacity:(NSUInteger)capacity; // Array con n
posiciones reservadas
ESTRUCTURAS DE
                 DATOS -
              NSDICTIONARY
• Las   clases para la gestión de mapas son NSDictionary y
 NSMutableDictionary

  • Obtener   un objeto del mapa:
   - (id)objectForKey:(id)key;


  • Añadir   un objeto al mapa:
   - (void)setObject:(id)object forKey:(id)key;
ESTRUCTURAS DE
                 DATOS -
             NSDICTIONARY 2
• Para   la creación de diccionarios existen varios métodos
+ (id)dictionaryWithObject:(id)object forKey:(id)key; //
Diccionario con un único objeto
+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...; //
Diccionario con un listado de objetos acabados en nil
+ (id)dictionaryWithDictionary:(NSDictionary *)dict; //
Diccionario con copia
+ (id)dictionaryWithObjects:(NSArray *)objects
                    forKeys:(NSArray *)keys; // Diccionario
con un listado de claves y otro de valores
ESTRUCTURAS DE
               DATOS -
           NSDICTIONARY 3
• Para
     la creación de diccionarios mutables existen varios
 métodos


+ (id)dictionaryWithCapacity:(NSUInteger)capacity;//
Diccionario con n posiciones reservadas
PONIENDO EN PRÁCTICA



• Para   este tema vamos a tomar contacto con Xcode
FIN

Más contenido relacionado

PPTX
4 Introducción al lenguaje Scala
PPTX
Introducción a Scala
PDF
Ruby para Java Developers
PPTX
3 Introducción al lenguaje PHP
PPTX
2 Introducción al lenguaje Ruby
PPT
PPTX
Portafolio de evidencias
PDF
Introducción a Swift
4 Introducción al lenguaje Scala
Introducción a Scala
Ruby para Java Developers
3 Introducción al lenguaje PHP
2 Introducción al lenguaje Ruby
Portafolio de evidencias
Introducción a Swift

La actualidad más candente (18)

PDF
Introducción a scala
PPTX
PDF
04 j flex
PDF
Tutorial de php
PPTX
Software Clips
PPTX
El lenguaje de pogramación C++
PPTX
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
PPTX
Estructura basica de_un_programa_c_
PPTX
Estructuras básicas para C++
PPT
TUTORIAL JAVA
PDF
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
PDF
PDF
Taller ruby
ODP
Ficheros de cabecera
PDF
Variables en php
PDF
Unidad i antecedentes
PDF
Java Basico Platzi
PPT
Lenguaje
Introducción a scala
04 j flex
Tutorial de php
Software Clips
El lenguaje de pogramación C++
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
Estructura basica de_un_programa_c_
Estructuras básicas para C++
TUTORIAL JAVA
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
Taller ruby
Ficheros de cabecera
Variables en php
Unidad i antecedentes
Java Basico Platzi
Lenguaje
Publicidad

Similar a Ios.s2 (20)

PPTX
Programación Orientada a Objetos - Unidad 2: clases y objetos
PPTX
Lenguaje de programación orientada a objetos
PDF
Información básica Java
PDF
PDF
03. Introduccion a JavaScript y JQuery
PPT
PPTX
Uso de las clases iostream
PPTX
PPTX
Programacion orientada a objetos 2
PDF
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
PPT
Repaso de Java y Arreglos en herramuentas.ppt
KEY
Ios.s9
PPT
Programación III (Java) - 01 Introduccion
PPTX
PDF
Javascript - 2014
PDF
Semana 6 Módulos Clases y Objetos
PPTX
lenguajejava.pptx
Programación Orientada a Objetos - Unidad 2: clases y objetos
Lenguaje de programación orientada a objetos
Información básica Java
03. Introduccion a JavaScript y JQuery
Uso de las clases iostream
Programacion orientada a objetos 2
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
Repaso de Java y Arreglos en herramuentas.ppt
Ios.s9
Programación III (Java) - 01 Introduccion
Javascript - 2014
Semana 6 Módulos Clases y Objetos
lenguajejava.pptx
Publicidad

Más de ulcurbegi (14)

PDF
Proyecto LISFAB y Emprendimiento 4.0
KEY
Ios.s14
KEY
Ios.s13
KEY
Ios.s12
KEY
Ios.s11
KEY
Ios.s10
KEY
Ios.s8
KEY
Ios.s7
KEY
Ios.s6
KEY
Ios.s5
KEY
Ios.s4
KEY
Ios.s3
KEY
Ios.s1
KEY
Ios.s15
Proyecto LISFAB y Emprendimiento 4.0
Ios.s14
Ios.s13
Ios.s12
Ios.s11
Ios.s10
Ios.s8
Ios.s7
Ios.s6
Ios.s5
Ios.s4
Ios.s3
Ios.s1
Ios.s15

Ios.s2

  • 1. 2 - OBJECTIVE-C Curso de desarrollo de aplicaciones móviles para iPhone y iPad endika.gutierrez@urbegi.com alex.rayon@urbegi.com Urbegi Learning Contents
  • 2. OBJECTIVE-C • Objective-C es el lenguaje empleado por apple para todas sus plataformas. OS X e iOS • Es un lenguaje orientado a objetos • Basado en C. De hecho es un superconjunto de este • Compatible con librerias de C • Sintaxis inspirada en Smalltalk
  • 3. OBJECTIVE-C 2 • Data de principios de los 80 • Uno de los primeros lenguajes orientados a objetos • Adoptado por Steve Jobs para su uso en el sistema operativo NeXTStep • Posteriormente dio lugar a OS X • Todavía se conserva el prefijo ‘NS’ en muchas de las clases del sistema
  • 4. OBJECTIVE-C 3 • Es un lenguaje de programación muy verboso • Existen métodos que pueden llegar a ocupar varias lineas • Es muy raro el uso de excepciones aunque existen • Pese a ser compatible con C difiere mucho en su sintaxis • Es un lenguaje de Tipado dinámico • El comportamiento se decide en la fase de ejecución y no en la de compilación
  • 5. SINTAXIS DE OBJECTIVE-C • En Objective-C no se llaman funciones • Se pasan mensajes entre objetos • [objeto mensaje]; • Equivalente en Java a • objeto.mensaje();
  • 6. SINTAXIS DE OBJECTIVE-C 2 • [objeto mensaje]; • Los mensajes van entre [] • Se pueden anidar llamadas siempre que estas vayan entre corchetes: • [[objeto mensaje] otroMensaje]; • El método a ejecutar se resuelve en tiempo de ejecución
  • 7. SINTAXIS DE OBJECTIVE-C 3 • Los parametros quedan intercalados • [objeto mensaje:param1 otroParam:param2]; • Equivalente en Java a • objeto.mensaje(param1, param2);
  • 8. SINTAXIS DE OBJECTIVE-C 4 • También se pueden anidar llamadas en los parametros • [objeto mensaje:[usuario nombre] otroParam:[lista objectAtIndex:0]]; • Equivalente en Java a • objeto.mensaje(usuario.nombre(), lista[0]); • En Objective-C se suelen generar llamadas a funciones muy verbosas
  • 9. SINTAXIS DE OBJECTIVE-C 5 • El receptor del mensaje puede ser nil • Equivalente a null en Java • Es posible mandar un mensaje a nil sin que se produzca errores ni NullPointerException • Estas llamadas devuelven 0 ó nil ó NO • ¡Elpaso de un mensaje a un objeto que no pueda responderlo dará una excepción!
  • 10. TIPOS BÁSICOS • Los objetos de Objective-C siempre se manejan con punteros • El tipo genérico para cualquier objeto es id • Equivalente a void* en C/C++
  • 11. TIPOS BÁSICOS 2 • Los tipos básicos son compartidos con C • int, float, doble, long... • Además incluye nuevos tipos • Los valores booleanos son del tipo BOOL • Pueden tomar los valores YES y NO
  • 12. TIPOS BÁSICOS 3 • self representa a la instancia actual • Similar a this en Java o en C++ • super representa la clase padre de la actual • Similar a super de Java
  • 13. TIPOS BÁSICOS 4 • Todos los objetos en Objective-C heredan de la clase NSObject • Similar a la clase Object de Java
  • 14. TIPOS BÁSICOS 5 • Objective-C posee clases para las estructuras básicas de datos • NSString y NSMutableString para Cadenas de texto • NSArray y NSMutableArray para Listas • NSDictionary y NSMutableDictionary para Mapas • Están diferenciados los objetos mutables de los inmutables
  • 15. CADENAS DE TEXTO • NSString y NSMutableString manipulan cadenas de texto • Laprimera de ellas no se puede modificar el contenido. La segunda sí. • Las cadenas de texto se pueden definir con @”texto” • Para diferenciarlas de las cadenas de C ”texto” • Ejemplo: NSString *texto = @”un texto”;
  • 16. DEFINICIÓN DE CLASES • Interfaz e implementación separados en dos ficheros • Como en C++ • .h para la interfaz • .m para la implementación
  • 17. DEFINICIÓN DE CLASES • Sintaxis de definición de clases • Ficheros .h @interface Clase : Superclase ...definición... @end
  • 18. DEFINICIÓN DE CLASES • Sintaxis de implementación de clases • Ficheros .m @implementation Clase ...implementación... @end
  • 19. DEFINICIÓN DE CLASES • Los métodos de clase se definen así: • - (ClaseRetorno *)metodoConParametro:(ClaseParam1 *)param1 parametro2:(ClaseParam2 *)param2 otroParametro:(ClaseParam3 *)param3; • Elsímbolo - antes del método indica que es un método de instancia • Elsímbolo + antes del método indica que es un método de clase
  • 20. REFERENCIAS A CLASES EXTERNAS • Se incluyen cabeceras con #import •A diferencia de los #include de C evita que una misma cabecera se incluya dos veces • Laimplementación de la clase deberá importar la interfaz de la misma • Lainterfaz de la clase debará importar las clases que se vayan a necesitar. Cómo mínimo la clase padre.
  • 21. VARIABLES DE OBJETO • Definidas en la interfaz de la clase entre {} @interface Clase : Superclase { int _variable1; float _variable2; NSArray *_unaLista; } @end
  • 22. VARIABLES DE OBJETO • Normalmente las variables de instancia llevan un _ por delante para diferenciarlas de las variables locales @interface Clase : Superclase { int _variable1; float _variable2; NSArray *_unaLista; } @end
  • 23. EJEMPLO PERSONA.H #import <Foundation/Foundation.h> // incluye la definición de los objetos básicos @interface Persona : NSObject { NSString *_nombre; // atributos NSString *_apellido; int _edad; float _altura; NSArray *_habilidades; } - (void)saluda; @end
  • 24. EJEMPLO PERSONA.M #import “Persona.h” // incluye la interfaz @implementation Persona - (void)saluda { NSLog(@”Hola, me llamo %@.”, _nombre); // NSLog funciona como printf. %@ imprime el valor de un objeto } @end
  • 25. PROPIEDADES • Laspropiedades definen el acceso a las variables de los objetos • Equivalente a los Getters y Setters de Java • Se acceden como objeto.propiedad
  • 26. PROPIEDADES 2 • Se definen en la interfaz como • @property (nonatomic, copy) NSString * nombre; • nonatomic indica que el setter no debe ser thread-safe • copy indica que se debe copiar el objeto en el setter • Otras opciones son strong y weak que veremos en el capítulo de gestión de memoria.
  • 27. PROPIEDADES 3 • Se definen en la implementación como • @synthesize nombre = _nombre; •A la derecha de la igualdad indicamos la variable en la que queremos que se almacene el valor (Opcional) • Veamos un ejemplo con propiedades
  • 28. EJEMPLO 2 PERSONA.H #import <Foundation/Foundation.h> // incluye la definición de los objetos básicos @interface Persona : NSObject // propiedades @property (nonatomic, copy) NSString *nombre; @property (nonatomic, copy) NSString *apellido; @property (nonatomic) int edad; @property (nonatomic) float altura; @property (nonatomic, copy) NSArray *habilidades; - (void)saluda; @end
  • 29. EJEMPLO 2 PERSONA.M #import “Persona.h” // incluye la interfaz @implementation Persona @synthesize nombre = _nombre; @synthesize apellido = _apellido; @synthesize edad = _edad; @synthesize altura = _altura; @synthesize habilidades = _habilidades; - (void)saluda { NSLog(@”Hola, me llamo %@.”, self.nombre); // NSLog funciona como printf. %@ imprime el valor de un objeto } @end
  • 30. CONSTRUCTORES • La creación de objetos en Objective-C se hace en dos etapas •1 - Reserva de la memoria alloc •2 - Inicialización init
  • 31. CONSTRUCTORES 2 • Ejemplo de creación de la clase Persona del ejemplo anterior: • Persona *pablo = [[Persona alloc] init];
  • 32. CONSTRUCTORES 3 • Podemos sobrecargar el método init para personalizar la creación del objeto - (id)init { self = [super init]; // También debemos llamar al constructor padre if (self) { // Inicialización del objeto } return self; }
  • 33. CONSTRUCTORES 4 • El método init puede recibir parametros para la construcción: • Persona *pablo = [[Persona alloc] initWithName:@”Pablo” surname:@”Picasso”];
  • 34. CONSTRUCTORES 5 • Algunas clases poseen métodos estáticos para crear los objetos en una única llamada: • NSArray *lista = [NSArray arrayWithObjects:@”Pablo”, @”Juan”, @”Pepe”, nil]; • Estas llamadas no actuan igual que alloc init. • Veremos las diferencias en el capítulo de gestión de memoria
  • 35. ESTRUCTURAS DE DATOS • EnObjective-C estan diferenciadas las listas y mapas que son editables y las que no • Losobjetos inmutables se deberán indicar todos los objetos en el momento de su creación • [NSArray arrayWithObjects:@”Pablo”, @”Juan”, @”Pepe”, nil]; • Objective-C no tiene sobrecarga de operadores por lo que todas las operaciones son métodos
  • 36. ESTRUCTURAS DE DATOS - NSARRAY • Las clases para la gestión de listas son NSArray y NSMutableArray • Obtener un objeto de la lista: - (id)objectAtIndex:(NSUInteger)index; • Añadir un objeto a la lista: - (void)addObject:(id)object;
  • 37. ESTRUCTURAS DE DATOS - NSARRAY 2 • Para la contrucción de arrays existen diversos métodos + (id)arrayWithObject:(id)object; // Array con un único objeto + (id)arrayWithObjects:(id)object, ...; // Array con una lista de objetos separados por coma y acabados en nil + (id)arrayWithObjects:(const id*)object count:(NSUInteger)count; // Array con una lista de objetos + (id)arrayWithArray:(NSArray)array; // Copia de otro array
  • 38. ESTRUCTURAS DE DATOS - NSARRAY 3 • Para la contrucción de arrays mutables existen otros métodos + (id)arrayWithCapacity:(NSUInteger)capacity; // Array con n posiciones reservadas
  • 39. ESTRUCTURAS DE DATOS - NSDICTIONARY • Las clases para la gestión de mapas son NSDictionary y NSMutableDictionary • Obtener un objeto del mapa: - (id)objectForKey:(id)key; • Añadir un objeto al mapa: - (void)setObject:(id)object forKey:(id)key;
  • 40. ESTRUCTURAS DE DATOS - NSDICTIONARY 2 • Para la creación de diccionarios existen varios métodos + (id)dictionaryWithObject:(id)object forKey:(id)key; // Diccionario con un único objeto + (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...; // Diccionario con un listado de objetos acabados en nil + (id)dictionaryWithDictionary:(NSDictionary *)dict; // Diccionario con copia + (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys; // Diccionario con un listado de claves y otro de valores
  • 41. ESTRUCTURAS DE DATOS - NSDICTIONARY 3 • Para la creación de diccionarios mutables existen varios métodos + (id)dictionaryWithCapacity:(NSUInteger)capacity;// Diccionario con n posiciones reservadas
  • 42. PONIENDO EN PRÁCTICA • Para este tema vamos a tomar contacto con Xcode
  • 43. FIN

Notas del editor