Inici de sessió d'usuari


Missatgeria d'Objecte


Per obtindre un objecte per fer quelcom, pots enviar-li un missatge explicant-li que apliqui un mètode. En Objective-C, les expressions missatge estan tancant entre claus:

[receiver message]

El receptor és un objecte, i el missatge indica que ha de fer. En codi font, el missatge és simplement el nom de un mètode i tots els arguments que li soón passats. Quan un missatge s'envia, els sistema d'execució sel·lecciona el mètode apropiat del repertori del receptor i l'invoca.

Per exemple, aquest missatge indica a l'objecte myRect que executi el seu mètode display, el qual causa que el rectangle es mostri ell mateix:

[myRect display]

Els mètode poden rebre arguments. El missatge imaginari de sota indica a myRect la seva localització dins la finestra a les coordenades (30.0, 50.0):

[myRect setOrigin:30.0 :50.0];

Aquí el nom del mètode, setOrigin::, té dos doble-punt, un per a cada un dels seus arguments. Els arguments s'afegeixen despres dels doble-punts. Els doble-punts no tenen que estar agrupats al final del nom del mètode, com està aquí. Normalment una etiqueta descriu l'argument que precedeix a cada doble-punt. El mètode setWith:height, per exemple, agafa dos arguments:

[myRect setWidth:10.0 height:15.0];

Els mètodes que agafen un nombre variable d'arguments també existeixen, encara que són una mica extranys. Els arguments extres estan separants per comes després del final del nom del mètode. (A diferència dels doble-punts, les comes no són considerades part del nom). En el següent exemple el mètode imaginari makeGroup: se li passa un argument requerit (group) i tres que són opcionals:

[receiver makeGroup:group, memberOne, memberTwo, memberThree]

Com a les funcions de l'estàndar C, els mètodes poden retornar valors. El següent exemple activa la variable isFilled a YES si myRect es dibuixa com un rectangle sòlid, o NO si aquest és dibuixat només amb la forma de la línia externa.

BOOL isFilled;
isFilled = [myRect isFilled];

Fixeu-vos que una variable i un mètode poden tenir el mateix nom.

Una expressió de missatge pot ser necesasria dins una altra. Aquí un rectangle es activat amb el color d'un altre.

[myRect setPrimeryColor:[otherRect primeryColor]];

Un missatge a nil també es vàlid, tant com que el misastge retorna un objecte; si aquest ho fa, un missatge enviat a nil retornar nil. Si el mmissatge envia a nil retorna qualsevol altre cosa que un objecte, el valor de retorn és indefinit.

En aquesta secció: