la solution simple est de passer en tant que paramètre:
[instance method:self];
...
- (void) method:(class *)caller { ...
pour éviter le couplage des deux classes Cependant, ensemble, il est courant d'utiliser un protocole pour définir la sémantique du rappel et de séparer l'appel de méthode de la spécification du gestionnaire de rappel en affectant d'abord un délégué, puis en appelant des méthodes. C'est un peu impliqué, et j'espère avoir correctement couvert tous les détails.
// Foo.h
@class Foo;
@protocol FooDelegate
- (void)doSomethingWithFoo:(Foo*)caller;
@end
@interface Foo {
id<FooDelegate> delegate;
}
@property (nonatomic, retain) id<FooDelegate> delegate;
- (void)method;
@end
// Foo.m
@implementation Foo
@synthesize delegate;
- (void)method {
[delegate doSomethingWithFoo:self];
}
@end
// Bar.h
#import "Foo.h"
@interface Bar<FooDelegate> {
}
// Bar.m
@implementation Bar
- (IBAction)method {
Foo *foo = [[Foo alloc] init...];
foo.delegate = self;
[foo method];
}
- (void)doSomethingWithFoo:(Foo*)caller {
NSLog(@"Callback from %@", caller);
}
@end
Que voulez-vous dire? Que sont 'value' et' someOtherValue'? – kennytm
valeur serait la valeur d'origine de la variable et une autre valeur serait une nouvelle valeur qui serait affectée à l'instance. Voulez-vous dire quelles sont les valeurs spécifiques? – bubster