Можно ли объявить анонимные реализации таких вещей, как делегаты в Objective-C. Я думаю, что у меня есть правильная терминология, но вот пример Java:
myClass.addListener(new FancyInterfaceListener({
void onListenerInterestingAction(Action a){
....interesting stuff here
}
});
Так, например, для обработки вызова UIActionSheet я должен объявить другой метод в том же классе, что кажется немного глупым, если я хочу передать ему данные, потому что я должен был бы хранить эти данные как глобальную переменную. Вот пример удаления чего-либо с диалоговым окном подтверждения, спрашивающим, уверены ли вы:
-(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];
}
и UIActionSheetDelegate в одном классе:
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0){
[[Settings sharedSettings] removeItemAtIndex:/*need index variable here*/];
[drinksTable reloadData];
}
}
То, что я хочу сделать, это объявить его встроенным, как я это делал в примере с java вверху. Это возможно?