Est-il possible de déclarer des implémentations anonymes de choses comme des délégués dans Objective-C. Je pense avoir le droit de terminologie, mais voici un exemple java:Implémentation de délégué anonyme dans Objective-C?
myClass.addListener(new FancyInterfaceListener({
void onListenerInterestingAction(Action a){
....interesting stuff here
}
});
Ainsi, par exemple pour gérer un appel UIActionSheet Je dois déclarer une autre méthode dans la même classe, ce qui semble un peu bête si je veux passer données, parce que je devrais stocker ces données en tant que variable globale. Voici un exemple de supprimer quelque chose avec une boîte de dialogue de confirmation vous demandant si votre sûr:
-(void)deleteItem:(int)indexToDelete{
UIActionSheet *confirm = [[UIActionSheet alloc] initWithTitle:@"Delete Item?" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete" otherButtonTitles:nil];
[confirm showInView:self.view];
[confirm release];
}
et la UIActionSheetDelegate dans la même classe:
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0){
[[Settings sharedSettings] removeItemAtIndex:/*need index variable here*/];
[drinksTable reloadData];
}
}
Ce que je veux être en mesure de faire est de déclarer en ligne , tout comme je l'ai fait dans l'exemple java en haut. Est-ce possible?
Je viens d'écrire une solution pour ce genre posible de situations [ici] (https://github.com/GojaN/AnonymusDelegate). Gardez à l'esprit que ceci est une preuve de concept. –
Oui, vous pouvez le faire avec des bibliothèques tierces, lisez ma réponse complète ici: http://stackoverflow.com/a/33096839/440168 – k06a