addTarget
でできるのは素晴らしいことUIButton
です。ターゲットメソッドが呼び出されたときに、その状態(任意のID)を送信者から魔法のようにプルできるように、UIButtonに状態をアタッチできる卑劣な方法があればいいのにと思います。
何かのようなもの:
[button shoveMyObjectInThere:foo];
[button addTarget:self action:@selector(touchyTouchy:) forControlEvents:UIControlEventTouchUpInside];
に続く:
-(void) touchyTouchy:(id) sender {
UIButton button = (UIButton*)sender;
id foo = [button getByObjectBack];
// do something interesting with foo
}
UIButton に、開発者が何かを押し込める「id コンテキスト」プロパティがあれば素晴らしいと思いますが、そうではないようです。ただし、Objective-C は非常に動的な言語なので、実行時にオブジェクトにメソッドまたはフィールドを追加できる卑劣な方法があるのだろうか?