Objective-C で Delegates などの匿名実装を宣言することは可能ですか? 用語は正しいと思いますが、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 の例で行ったように、インラインで宣言することです。これは可能ですか?