Está en la página 1de 18

LENGUAJE DE POO:

OBJECTIVE C

PRESENTADO POR:
JULIAN MEJIA
EDGAR RIVERA (no presento ponencia)

CURSO:
PROGRAMACION III
GRUPO:
AD

PRESENTADO A:
CARLOS HENRIQUEZ MIRANDA

UNIVERSIDAD AUTONOMA DEL CARIBE


30/05/14
Introduccin

En este trabajo desarrollaremos a fondo el lenguaje


Objective C, adaptado principalmente en Mac OS X, iOS Y
GNUstep.
Objective-C es un lenguaje de programacin orientado a
objetos creado como un superconjunto de C para que
implementase un modelo de objetos. Originalmente fue
creado por Brad Cox y la corporacin StepStone en 1980.
En 1988 fue adoptado como lenguaje de programacin de
NEXTSTEP y en 1992 fue liberado bajo licencia GPL para el
compilador GCC.

Qu es Objective C?
Es un lenguaje de programacin sencillo diseado para permitir la
sofisticada programacin orientada a objetos nacido en la dcada de
los 80, creado como un superconjunto de C. es decir, es posible
compilar cualquier programa escrito en C con un compilador de
Objective-C, y tambin se puede incluir libremente cdigo en C dentro
de una clase de Objective-C. Objective-C extiende el estndar ANSI
del lenguaje C, proporcionando sintaxis para definir clases, mtodos,
as como otras estructuras que promueven la extensin dinmica de
clases.
Muchos de los conceptos tradicionales de orientacin a objetos, como
encapsulacin, herencia, y polimorfismo, estn presentes en
Objective-C.
Objective-C es un superconjunto de la versin ANSI del lenguaje de
programacin C y soporta la misma sintaxis que C. Como con cdigo
C, puede definir sus ficheros de cabeceras y sus ficheros de cdigo
fuente para separar las declaraciones pblicas de los detalles de la
implementacin de su cdigo.
Caractersticas de C que estn presentes en Objective-C son:

Sentencias de control de flujo (if, for, while...)

Tipos de datos fundamentales, estructuras y punteros.

Conversiones implcitas y explcitas entre tipos.

El mbito de las variables: Global, estticas o locales.

Las funciones y su sintaxis.

Las directivas del preprocesador (aadiendo Objective-C las


suyas, as como las llamadas directivas del compilador).

Y entonces en qu se diferencian C++ y


Objective-C?
Pues en muchas cosas, empezando por las influencias procedentes de
las ideas de Smalltalk, lo cual hace de Objective-C un lenguaje muy
limpio, pequeo y por ende, mucho ms rpido y fcil de aprender
que C++. Aun as, Objective-C es mucho menos usado que C++

Si se tuviese que elegir una caracterstica que diferencie a ObjectiveC de otros lenguajes (ya no slo de C++), sta sera su dinamismo,
en el sentido de que Objective-C es un lenguaje marcadamente
dinmico. Muchas de las decisiones que otros lenguajes toman en
tiempo de compilacin, Objective-C las toma en tiempo de ejecucin.
Ejemplos:

En Objective-C, a diferencia de C++, los objetos siempre se


crean en memoria dinmica.

Los atributos de una clase no tienen por qu estar tipificados


estticamente.

la comprobacin de la existencia de los mtodos se lleve a cabo


en tiempo de ejecucin. Esto qu quiere decir? Pues que si por
ejemplo llamsemos al mtodo imprimirHola de nuestra clase
Saludar, pero este no existe, el error nos saltara durante la
ejecucin del programa y no durante la compilacin.

Historia
A principios de los 80, el software se desarrollaba usando
programacin estructurada. La programacin estructurada se
estableci para ayudar a dividir los programas en pequeas partes,
haciendo ms fcil el desarrollo cuando la aplicacin se volva muy
grande. Sin embargo, como los problemas seguan creciendo al pasar
el tiempo, la programacin estructurada se volvi compleja dado el
desorden de algunos programadores para invocar instrucciones
repetitivamente, llevando a cdigo spaghetti y dificultando la
reutilizacin de cdigo.
Muchos vieron que la programacin orientada a objetos sera la
solucin al problema. De hecho, Smalltalk ya tena solucionados
muchos de estos problemas: algunos de los sistemas ms complejos
en el mundo funcionaban gracias a Smalltalk. Pero Smalltalk usaba
una mquina virtual, lo cual requera mucha memoria para esa poca,
y era demasiado lento.
Objective-C fue creado principalmente por Brad Cox y Tom Love a
inicios de los 80 en su compaa Stepstone. Ambos fueron iniciados
en Smalltalk mientras estaban en el Programming Technology Center
de ITT en 1981. Cox se vio interesado en los problemas de
reutilizacin en el desarrollo de software. Se dio cuenta de que un
lenguaje como Smalltalk sera imprescindible en la construccin de
entornos de desarrollo potentes para los desarrolladores en ITI
Corporation. Cox empez a modificar el compilador de C para agregar
algunas de las capacidades de Smalltalk. Pronto tuvo una extensin

para aadir la programacin orientada a objetos a C la cual llam


OOPC (Object-Oriented Programming in C). Love mientras tanto,
fue contratado por Shlumberger Research en 1982 y tuvo la
oportunidad de adquirir la primera copia de Smalltalk-80, lo que
influy en su estilo como programador.
Para demostrar que se hizo un progreso real, Cox mostr que para
hacer componentes de software verdaderamente intercambiables
slo se necesitaban unos pequeos cambios en las herramientas
existentes. Especficamente, estas necesitaban soportar objetos de
manera flexible, venir con un conjunto de bibliotecas que fueran
utilizables, y permitir que el cdigo (y cualquier recurso necesitado
por el cdigo) pudiera ser empaquetado en un formato
multiplataforma.

Sintaxis
Para escribir el programa clsico "Hola Mundo" para correr en consola,
se puede utilizar el siguiente cdigo:
#import <stdio.h>
int main( int argc, const char *argv[] ) {
printf( "Hola Mundo\n" );
return 0;
}

El cdigo anterior se diferenci BN a de un cdigo en C comn por la


primera instruccin #import, que difiere del #include del C clsico,
pero la funcin printf("") es puramente C. La funcin propia de
Objective-C para imprimir una cadena de caracteres en consola es
NSLog(@""); utilizndola, el cdigo anterior quedara de la siguiente
manera:

int main( int argc, const char *argv[] )


{
NSLog( @"Hola Mundo\n" );
return 0;
}

La sintaxis de objetos de Objective-C deriva de Smalltalk. Toda la


sintaxis para las operaciones no orientadas a objetos (incluyendo
variables primitivas, pre-procesamiento, expresiones, declaracin de
funciones y llamadas a funciones) son idnticas a las de C, mientras
que la sintaxis para las caractersticas orientadas a objetos es una
implementacin similar a la mensajera de Smalltalk.

Clases
Como en otros lenguajes orientados a objeto, las clases en ObjectiveC proporcionan la estructura bsica para encapsular datos con las
acciones que operan con esos datos. Un objeto es una instancia en
tiempo de ejecucin de una clase, que contiene su propia copia en
memoria de las variables de instancia declaradas por esa clase y
punteros a los mtodos de la clase.
La especificacin de una clase en Objective-C requiere de dos piezas:
la interfaz y la implementacin. La parte de la interfaz contiene la
declaracin de la clase y define las variables de instancia y los
mtodos asociados con la clase. La interfaz normalmente se
encuentra en un fichero .h. La parte de la implementacin contiene el
cdigo para los mtodos de la clase. Normalmente, la implementacin
se encuentra en un fichero .m.
La Figura 1 muestra la sintaxis de la declaracin de una clase llamada
MyClass, que hereda de la clase base NSObject. Siguiendo el nombre
de la clase (y separado por dos puntos) est el nombre de la clase
padre. Las variables de instancia (o miembros) de la clase estn
declaradas en un cdigo de bloque delimitado por corchetes
({ and }). A continuacin del bloque de las variables de instancia se
encuentra el listado de los mtodos declarados por la clase. Un punto
y coma indica el final de cada variable de instancia y cada
declaracin de mtodo.
Declaracin de la clase:

Cuando almacenamos objeto en variables, necesita usar un puntero.


Objective-C permite tipado fuerte y dbil para variables que
contienen objetos. Punteros fuertemente tipados incluyen el nombre
de la clase en la declaracin de la variable. En su lugar, los punteros
dbilmente tipados usan el tipo id para objetos. Los punteros
dbilmente tipados se usan frecuentemente para cosas como
colecciones de clases, donde la cantidad exacta de objetos en la
coleccin puede ser desconocida. Si est acostumbrado a usar
lenguajes fuertemente tipados, puede pensar que las variables
dbilmente tipadas pueden ocasionar problemas, pero en realidad
permiten una tremenda flexibilidad y permiten un mayor dinamismo
en programas Objective-C.

Mtodos
Una clase en Objective-C puede declarar dos tipos de mtodos:
mtodos de instancia y mtodos de clase. Un mtodo de instancia es
un mtodo cuya ejecucin tiene como mbito una instancia particular
de la clase. En otras palabras, antes de que llames al mtodo,
primero debe crear una instancia de la clase. Los mtodos de clase,
por comparacin, no requieren el crear una instancia, pero
especificaremos eso ms adelante.

De Clase
+ (id)alloc;
+ (id)identifier;

De Instancia
- (id)init;
- (float)height;
- (void)walk;
La declaracin de un mtodo consiste en un identificador de tipo, un
tipo de retorno, una o ms palabras clave, y el tipo y nombre de
parmetro. La imagen muestra la declaracin del mtodo de instancia
insertObject:atIndex:
Sintaxis de la declaracin de mtodo:

Esta declaracin est presida de un signo menos ( - ), que indica que


es
un
mtodo
de
instancia.
El
nombre
del
mtodo
(insertObject:atIndex:) es una concatenacin de las palabras clave,
incluyendo caracteres 'dos puntos'. Si un mtodo no tiene
parmetros, omite el primer ':' despus de la primera (y nica)
palabra clave. En este ejemplo, el mtodo tiene dos parmetros.
Cuando quiera llamar a un mtodo, lo hace pasando mensajes a un
objeto. El mensaje incluye las palabras claves del mtodo junto a la
informacin de los parmetros que el mtodo necesite. Todos los
mensajes que enves a un objeto son enviados dinmicamente, para
facilitar el comportamiento polimrfico de las clases de Objective-C.

Mensajes
El modelo de programacin orientada a objetos de Objective-C se
basa en enviar mensajes a instancias de objetos. Esto es diferente al
modelo de programacin al estilo de Simula, utilizado por C++ y esta
distincin es semnticamente importante. En Objective-C uno no
llama a un mtodo; uno enva un mensaje, y la diferencia entre
ambos conceptos radica en cmo el cdigo referido por el nombre del
mensaje o mtodo es ejecutado. En un lenguaje al estilo Simula, el
nombre del mtodo es en la mayora de los casos atado a una seccin
de cdigo en la clase objetivo por el compilador, pero en Smalltalk y
Objective-C, el mensaje sigue siendo simplemente un nombre, y es
resuelto en tiempo de ejecucin: el objeto receptor tiene la tarea de
interpretar por s mismo el mensaje. Una consecuencia de esto es que
el mensaje del sistema que pasa no tiene chequeo de tipo: el objeto
al cual es dirigido el mensaje (conocido como receptor) no est
inherentemente garantizado a responder a un mensaje, y si no lo
hace, simplemente lo ignora y retorna un puntero nulo.
Enviar el mensaje method al objeto apuntado por el puntero obj
requerira el siguiente cdigo en C++:

obj->method(parameter);
Mientras que en Objective-C se escribira como sigue:
obj method:parameter]; [
Ambos estilos de programacin poseen sus fortalezas y debilidades.
La POO al estilo Simula permite herencia mltiple y rpida ejecucin
utilizando vinculacin en tiempo de compilacin siempre que sea
posible, pero no soporta vinculacin dinmica por defecto. Esto fuerza
a que todos los mtodos posean su correspondiente implementacin,
al menos que sean virtuales (aun as, se requiere una implementacin
del mtodo para efectuar la llamada). La POO al estilo Smalltalk
permite que los mensajes no posean implementacin - por ejemplo,
toda una coleccin de objetos pueden enviar un mensaje sin temor a
producir errores en tiempo de ejecucin. El envo de mensajes
tampoco requiere que un objeto sea definido en tiempo de
compilacin. (Ver ms abajo la seccin tipado dinmico) para ms
ventajas de la ligadura dinmica.

Interfaces e implementaciones
Objective-C requiere que la interfaz e implementacin de una clase
estn en bloques de cdigo separados. Por convencin, la interfaz es
puesta en un archivo cabecera y la implementacin en un archivo de
cdigo; los archivos cabecera, que normalmente poseen el sufijo .h,
son similares a los archivos cabeceras de C; los archivos de
implementacin (mtodo), que normalmente poseen el sufijo .m,
pueden ser muy similares a los archivos de cdigo de C.

Interfaz
La interfaz de la clase es usualmente definida en el archivo cabecera.
Una convencin comn consiste en nombrar al archivo cabecera con
el mismo nombre de la clase. La interfaz para la clase Clase debera,
as, ser encontrada en el archivo Clase.h.
La declaracin de la interfaz de la forma:
@interface classname : superclassname
{
// instance variables
}
+classMethod1;
+(return_type)classMethod2;
+(return_type)classMethod3:(param1_type)parameter_varName;

Los signos ms denotan mtodos de clase, los signos menos denotan


mtodos de instancia. Los mtodos de clase no tienen acceso a las
variables de la instancia.

Implementacin
La interfaz nicamente declara la interfaz de la clase y no los
mtodos en s; el cdigo real es escrito en la implementacin. Los
archivos de implementacin (mtodos) normalmente poseen la
extensin .m.
@implementation classname
+classMethod {
// implementation
}
-instanceMethod {
// implementation
}
@end

Los mtodos son escritos con sus declaraciones de interfaz.


Comparando Objective-C y C:
-(int)method:(int)i
{
return [self square_root: i];
}
int function(int i)
{
return square_root(i);
}

La sintaxis admite nombrado de argumentos.


-(int)changeColorToRed:(float)red green:(float)green blue:(float)blue
[myColor changeColorToRed:5.0 green:2.0 blue:6.0];

La representacin interna de ste mtodo vara entre diferentes


implementaciones de Objective-C. Si myColor es de la clase Color,
internamente, la instancia del mtodo -changeColorToRed:green:blue:
podra ser etiquetada como _i_Color_changeColorToRed_green_blue. La i
hace referencia a una instancia de mtodo, acompaado por los
nombres de la clase y el mtodo, y los dos puntos son reemplazados
por guiones bajos. Como el orden de los parmetros es parte del
nombre del mtodo, ste no puede ser cambiado para adaptarse al
estilo de codificacin.
De todos modos, los nombres internos de las funciones son raramente
utilizadas de manera directa, y generalmente los mensajes son
convertidos a llamadas de funciones definidas en la librera en tiempo
de ejecucin de Objective-C el mtodo que ser llamado no es
necesariamente conocido en tiempo de vinculacin: la clase del
receptor (el objeto que envi el mensaje) no necesita conocerlo hasta
el tiempo de ejecucin.

Tipado dinmico
En Objective-C un objeto puede enviar un mensaje que no est
especificado en su interfaz. Esto puede permitir una mayor
flexibilidad, ya que permite que un objeto capture un mensaje y lo
enve a un objeto diferente que puede responder al mensaje de
manera apropiada. Este comportamiento se conoce como el reenvo
de mensajes o delegacin.
Categoras
Las categoras nos permiten modificar una clase ya existente aunque
no dispongamos de su cdigo fuente. La diferencia que hay entre la
herencia y la categorizacin es que la herencia slo nos permite crear
nuevas hojas en la jerarqua de clases, mientras que la categorizacin
nos permite modificar nodos inferiores de la jerarqua de clases.
Entero.h
# import <objc /Object.h>;
@interface Entero : Object {
int entero;
}
- (int)entero;
- (id)entero:(int) param;
@end
</objc>
Entero.m
# import "Integer.h"
@implementation Integer
(int)entero {
return integer;
}
- (id)entero:(int)param {
entero = param;
return self;
}
@end
Entero+Aritmetica.h
# import "Integer.h"

@interface Entero (Aritmetica)


- (id)suma:(Entero *)adendo;
- (id)resta:(Entero *)sustraendo;
@end
Entero+Aritmetica.m
# import "Integer+Aritmetica.h"
@implementation Entero (Aritmetica)
- (id)suma:(Entero *)adendo {
return [self entero: [self entero] + [adendo entero]];
}
- (id)resta:(Entero *)sustraendo {
return [self entero: [self entero] - [sustraendo entero]];
}
@end

Encapsulacin
Para declarar los niveles de encapsulacin de las variables de
instancia, se usan las directivas del compilador @public, @protected y
@private. Ests directivas del compilador actan cmo modificadores
de acceso, pueden aparecer tantas veces cmo sea necesario, y
afectan a todas las variables de instancia desde su aparicin, hasta el
nuevo modificador de acceso. Si no existe modificador de acceso, por
defecto las variables de instancia son @protected. Los efectos de los
modificadores de acceso son los siguientes:

Cuando una variable de instancia tiene el modificador de


acceso @public, la variable de instancia es accesible desde
cualquier parte del programa.

Cuando una variable de instancia tiene el modificador de


acceso @private, entonces si se accede a la variable de
instancia desde dentro del objeto la variable de instancia es
visible. En cualquier otro caso no ser visible.

Cuando una variable de instancia tiene el modificador de


acceso @protected, las reglas de acceso son similares a las de
@private excepto que tambin se permite acceder a la variable
de instancia desde una clase derivada.

A diferencia de C o Java, los programadores Objective-C no tienen la


costumbre de indicar el mbito de accesibilidad de las variables de
instancia. Slo en las ocasiones en las que realmente sea importante

marcar a una variable cmo pblica o privada se usan sus


correspondientes directivas del compilador.
En Objective-C podemos acceder a variables de instancias protegidas
y privadas de un objeto desde fuera del objeto, pero el compilador
generar un warning, avisando de que en el futuro est formado de
acceso se considerar un error de compilacin.
Una peculiaridad de Objective-C, que no encontramos ni en C ni en
Java, es que los modificadores de acceso afectan slo a las variables
de instancia, no a los mtodos de la clase. Los mtodos en ObjectiveC pueden ser slo de dos tipos:

Mtodos pblicos, si estn declarados en la interfaz del objeto.

Mtodos privados, si estn declarados en la implementacin del


objeto.

Otra peculiaridad de Objective-C es que nos permite llamar a


mtodos privados (ya sean de clase o de objeto). Durante la
compilacin se producir un warning avisando de que el mtodo
podra no existir, pero en tiempo de ejecucin el mtodo se encuentra
y ejecuta correctamente. Aun as, est caracterstica puede cambiar
en el futuro, con lo que si vamos a ejecutar un mtodo desde fuera
del objeto, debemos declararlo de acceso pblico.
Por defecto el compilador tomar como protected todas las que no
estn afectadas por algn modificador explcitamente.
Para los efectos de este ejemplo aplicaremos estos modificadores de
la siguiente manera:
@interface Person : NSObject
{
NSString *name;
@public
NSDate *birthDate;
@private
float height;
@protected
float weight;
}
Name por defecto es protected.

Herencia

As como en muchos otros lenguajes, en Objective C es posible


trabajar con el concepto de herencia. La herencia define una jerarqua
entre diferentes clases. Una clase que est por encima de toda la
jerarqua puede ser definida como una root class o clase principal.
En lenguajes como Java dicha clase es la conocida Object, de la cual
todas las clases definidas en Java siempre heredarn. En el caso de
Objective C, la clase raz es conocida como NSObject. A partir de esta
clase raz es posible definir otras clases que estn por debajo en el
nivel jerrquico, como puede apreciarse en la siguiente definicin de
clase en Objective C:

Como se puede apreciar, en posible indicar que la clase Fraccion


(definida por nosotros) hereda de la clase NSObject. A diferencia de
lenguajes como Java en donde esta relacin no se especifica
directamente, en Objective C s debe hacerse. Ahora bien, Qu es
formalmente la herencia?. Veamos:
En orientacin a objetos la herencia es el mecanismo fundamental
para implementar la reutilizacin y extensibilidad del software. A
travs de ella los diseadores pueden construir nuevas clases
partiendo de una jerarqua de clases ya existente (comprobadas y
verificadas) evitando con ello el rediseo, la remodificacin y
verificacin de la parte ya implementada. La herencia facilita la
creacin de objetos a partir de otros ya existentes, obteniendo
caractersticas (mtodos y atributos) similares a los ya existentes.
Es la relacin entre una clase general y otra clase ms especfica. Por
ejemplo: Si declaramos una clase prrafo derivada de una clase texto,
todos los mtodos y variables asociadas con la clase texto, son
automticamente heredados por la subclase prrafo.
La herencia es uno de los mecanismos de la programacin orientada
a objetos, por medio del cual una clase se deriva de otra, llamada
entonces superclase, de manera que extiende su funcionalidad. Una
de sus funciones ms importantes es la de proveer Polimorfismo y
late binding [2].
Ahora veamos un ejemplo sencillo en Objective C para ilustrar este
concepto:

En este caso se hace una definicin muy sencilla de una clase


llamada ClaseA que hereda de NSObject y que slo define un
atributo entero. Adicionalmente se define el @property para el
atributo (recordar que esto se hace para indicarle a Objective C que
genere la definicin del get y set del atributo) y tambin se define un
mtodo llamado inicializarVar que no recibe nada como parmetro y
devuelve void. La implementacin de la clase puede verse en su
archivo .m respectivo:

Aqu puede apreciarse la implementacin de ClaseA. Es importante


recordar que el @synthesize es que el que permite junto con el
@property indicarle a Objective C que genere la definicin del get y
set del atributo. Adicionalmente podemos apreciar la implementacin
del mtodo respectivo. Ahora veamos que ocurre con otra clase que
pudiera heredar de ClaseA:

En este caso la clase ClaseB no hereda de NSObject, sino que lo


hace de ClaseA. En este caso ClaseB tiene la implementacin de
un mtodo llamada imprimiVar, que no recibe parmetros y devuelve
void. Veamos ahora la implementacin de esta interfaz en el
archivo .m respectivo:

La implementacin de la clase B imprime simplemente el valor de la


variable x por el terminal. Pero, De dnde proviene la variable x si
sta no est definida en el interface de ClaseB?. En este caso el
atributo es heredado de la clase ClaseA, al igual que el mtodo
inicializarVar, que inicializa el valor de x en 100.
De este pequeo ejemplo es posible extraer ciertos puntos de alta
importancia:

En Objective C, al igual que en Java, la herencia es simple (una


clase SLO puede heredar de otra, no hay herencia mltiple)

Al igual que en Java, en Objective C es posible heredar atributos


y mtodos

Clases Abstractas
En Objective (al igual que en lenguajes como Java o C++) es posible
definir clases abstractas. Recordemos que una clase abstracta es
aquella donde es posible tener implementacin de mtodos y
tambin prototipos de mtodos, que debern ser implementados por
aquellas clases que implementen o hagan el implements (Java) de
la clase abstracta. Por lo general las clases abstractas se utilizan para
definir clases con comportamientos comunes e implementar en cada
clase aquellos comportamientos distintos entre s.

Cmo definir
Objective C?

una

clase

abstracta

en

Ejemplo:

En este caso tenemos la misma clase ClaseA del ejemplo anterior,


pero en este caso se hace uso de una etiqueta adicional, llamada
@protocol. Es decir, estamos definiendo lo que en Objective C se

conoce como protocolo. El protocolo puede ser visto como un


contrato entre esta clase y cualquier otra clase que herede de ella
(siempre y cuando la clase hija acepte el contrato).
Dentro de este protocolo tenemos dos mtodos, uno llamado
metodoAbstracto y otro llamado metodoAbstractoDos.
Ahora analicemos nuestra clase claseB:

Se puede obserar que la clase ClaseB sigue heredando de ClaseA


pero con una salvedad. Ahora se deja especificado que
adicionalmente a heredar, ClaseA est aceptando el protocolo
(contrato) de ClaseA, con lo cual ahora ClaseB estar obligada a
implementar todos y cada uno de los mtodos contenidos en el
protocolo. Para aquellos desarrolladores que trabajan con lenguajes
como Java pudieran encontrar una similitud (de concepto, no de
implementacin) entre dicho lenguaje y Objective C.

Constructores convenientes (metodos factory)


Un constructor conveniente o metodo factory es un mtodo de clase
que devuelve un objeto (una instancia) de esa clase. Es una forma
conveniente de crear un objeto, puesto que no tenemos que
preocuparnos por la administracin de la memoria que este utiliza.
Sin embargo, un objeto creado mediante un constructor conveniente,
solamente tiene una existencia temporal. Generalmente, el tiempo
durante el cual se ejecuta el bloque de cdigo donde este se cre. Por
esto se dice que son objetos auto liberado. En algunos casos puede
ser necesario retener un objeto creado a partir de un constructor
conveniente. Es decir, hacer que el objeto exista durante un mayor
tiempo. Un ejemplo de esto lo veremos m as adelante. Los nombres
de los mtodos que corresponden a constructores convenientes,
usualmente comienzan con el nombre de la clase (sin el prefijo NS o
GS). Solamente las clases no visuales poseen constructores
convenientes. Ya que no tiene sentido que un objeto visual exista por
un breve tiempo. Un ejemplo de como crear un objeto mediante un
constructor conveniente es el siguiente:

NSArray *lista = [NSArray arrayWithObjects: @"Uno",


@"Dos",

@"Tres",
@"Cuatro",
nil];
Un array es una lista de objetos. En este caso, hemos creado una lista
que contiene las cadenas de texto Uno, Dos, Tres y Cuatro. Solamente
indica el final de la lista y no se incluye en esta. Este array creado de
esta forma es autoliberado y no debemos preocuparnos por la
administracin de la memoria que este utiliza.

También podría gustarte