Você está na página 1de 16

LENGUAJE DE POO:

OBJECTIVE C


PRESENTADO POR:
JULIAN MEJIA
EDGAR RIVERA


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 Objective-C 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 Objective-C 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 Objective-C 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 una clase abstracta en Objective C?
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. n ejemplo de esto lo veremos m as adelante. os 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.

Você também pode gostar