Czy można zadeklarować anonimowe implementacje rzeczy takich jak Delegaci w Objective-C. Chyba mam prawo terminologii, ale tutaj jest przykład Java:Anonimowa implementacja delegatów w Objective-C?
myClass.addListener(new FancyInterfaceListener({
void onListenerInterestingAction(Action a){
....interesting stuff here
}
});
Tak na przykład do obsługi połączenia UIActionSheet muszę zadeklarować innej metody w tej samej klasie, co wydaje się nieco głupie, jeśli chcę przejść to dane, ponieważ będę musiał przechowywać te dane jako zmienną globalną. Oto przykład z usunięciem coś z okna z prośbą o potwierdzenie jeśli pewne:
-(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];
}
i UIActionSheetDelegate w tej samej klasie:
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0){
[[Settings sharedSettings] removeItemAtIndex:/*need index variable here*/];
[drinksTable reloadData];
}
}
Co chcę móc wykonać jest zadeklarować inline , tak jak zrobiłem to w przykładzie Java na górze. czy to możliwe?
Po prostu piszę rozwiązanie dla tego rodzaju sytuacji [tutaj] (https://github.com/GojaN/AnonymusDelegate). Pamiętaj, że jest to dowód koncepcji. –
Tak, możesz to zrobić z bibliotekami innych firm, przeczytaj moją pełną odpowiedź tutaj: http://stackoverflow.com/a/33096839/440168 – k06a