我有一个通用例程,它需要一些参数。就像是:
-(id) doStuff:(int)A:(int)B:(int)C {
//doStuff
return object;
}
我有一个UITableViewController
,其中包含许多自定义单元格,每个单元格都有自己的 ID。当点击“保存”时,这些单元格会被迭代,并且某些单元格在被保存时需要“附加行为”。
到目前为止,我已经创建了一个“回调”对象,它NSString *
在自定义单元格中存储了一个和一个委托。在“保存”后,单元格会查看是否有任何回调要应用和使用
SEL sel = NSSelectorFromString(Sel);
if([Del respondsToSelector:sel])
[Del performSelector:sel withObject:Cell];
现在效果不错……但是,它需要我传递的方法来对传递的 Cell 的 ID 进行 switch/case,我想避免这种情况。
这就是为什么我想改用块,但我真的不知道如何将参数化块存储在变量中。
我正在尝试做的事情:
声明一个功能块doStuff
。
id (^doStuff) (int, int, int) = ^(int A, int B, int C) {
//does Stuff
};
并将之前创建的块添加为回调
[Cell addCallback:(^doStuff)(1, 2, 3)];
该块不能在那个时候被调用,而是存储在单元格中,并且只有在合适的时候才调用它。我将如何正确地解决这个问题?
非常感谢你。
编辑:我还想避免将块的参数存储在单元格中并在调用时传递它们,因为这将需要我进一步不必要地专门化单元格。