私はいくつかのパラメータを取る一般的なルーチンを持っています。何かのようなもの:
-(id) doStuff:(int)A:(int)B:(int)C {
//doStuff
return object;
}
私はUITableViewController
、それぞれが独自の ID を持つ多数のカスタムセルを収容する を持っています。[保存] をクリックすると、これらのセルが繰り返され、一部のセルは保存時に「追加の動作」が必要になります。
これまでNSString *
、カスタム セルにデリゲートを格納する「Callback」オブジェクトを作成しました。「保存」されると、セルは、適用して使用するコールバックがあるかどうかを調べます
SEL sel = NSSelectorFromString(Sel);
if([Del respondsToSelector:sel])
[Del performSelector:sel withObject:Cell];
これである程度うまくいきます...ただし、渡されたセルのIDでスイッチ/ケースを実行するには、渡すメソッドが必要であり、それを避けたいと思います。
そのため、代わりにブロックを使用したいのですが、パラメーター化されたブロックを変数に格納する方法がよくわかりません。
私がやろうとしていること:
関数ブロックを宣言しますdoStuff
。
id (^doStuff) (int, int, int) = ^(int A, int B, int C) {
//does Stuff
};
そして、以前に作成したブロックをコールバックとして追加します
[Cell addCallback:(^doStuff)(1, 2, 3)];
ブロックはその時点で呼び出されてはなりませんが、セルに保存され、適切なタイミングでのみ呼び出されます。どうすればこれを正しく行うことができますか?
どうもありがとうございました。
編集:私が避けたいのは、ブロックのパラメーターをセルに保存し、呼び出し時にそれらを渡すことです。これは、セルを不必要にさらに特殊化する必要があるためです。