2009-09-11 5 views

Répondre

1

L'envoi de messages à des objets à l'aide d'Objective-C s'effectue à l'aide des crochets.

Vous avez des méthodes d'instance, ils sont désignés par un signe - (moins) signe avant du type de retour de la méthode, comme ceci:

- (void)setDelegate:(id <SomeDelegateProtocol>)delegate; 

Sinon, vous avez les méthodes de classe dénotés avec un + (plus) signe:

+ (NSArray *)arrayWithObject:(id)object; 

le premier texte entre crochets représente le récepteur de ce message, dans le cas d'un message par exemple, ce sera un pointeur d'objet. Sinon, lorsque vous traitez un message de classe, vous utilisez la classe son nom.

Donc un est en effet un pointeur pour une instance, probablement de classe A (eh bien, c'est juste le nom de la variable à laquelle l'objet est assigné, il peut être de n'importe quelle classe).

0

Cet exemple suppose que nous avons deux classes, classe A et classe B, et que nous avons une instance de chacune d'elles; a est une instance de A, et b est une instance de B:

ClassA *a = [[[ClassA alloc] init] autorelease]; 
ClassB *b = [[[ClassB alloc] init] autorelease];

Nous sommes également en supposant que la classe A a une sorte de variable délégué, et une méthode setDelegate: qui change la valeur de cette variable. En général, un délégué est une instance d'un objet qui reçoit des messages sur les activités d'un autre objet ou définit son comportement d'une manière ou d'une autre. Ainsi, par exemple, si la classe A a une méthode doFoo, la classe B peut avoir un délégué la méthode a:didFoo: qui est appelée à partir de la classe A à chaque fois qu'elle fait Foo.

Mais avant que le délégué ne puisse remplir son objectif, l'objet sur lequel il doit recevoir des messages doit savoir qu'il a un délégué. Nous devons donc mettre notre instance de classe B en tant que délégué de classe A en utilisant la méthode de la classe A setDelegate::

[a setDelegate:b];
0

La réponse courte est:

Oui.

Espérons que tout va bien. Pour des réponses plus longues, voir Tim & JoostK.

Si vous n'êtes pas familier avec la syntaxe de passage des messages d'Obj-C, vous devriez probablement vous exercer davantage à ce sujet avant de vous inquiéter des délégués.Une fois que vous comprenez le passage des messages, les délégués sont simples.

Questions connexes