Можно ли объявлять анонимные реализации таких вещей, как Delegates, в 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 вверху. Возможно ли это?