Objective-C - 带有回调参数的存储 block

标签 objective-c ios callback

我有一个通用例程,它需要一些参数。 像这样的东西:

-(id) doStuff:(int)A:(int)B:(int)C {
    //doStuff
    return object;
}

我有一个 UITableViewController,其中包含许多自定义单元格,每个单元格都有自己的 ID。当点击“保存”时,这些单元格将被迭代,一些单元格在保存时需要“额外的行为”。

到目前为止,我已经创建了一个“回调”对象,它在自定义单元格中存储了一个 NSString * 和一个委托(delegate)。在“保存”后,单元格会查看是否有任何回调要应用和使用

SEL sel = NSSelectorFromString(Sel);
if([Del respondsToSelector:sel])
    [Del performSelector:sel withObject:Cell];

现在效果有点好......但是,它需要我传递的方法对传递的 Cell 的 ID 进行切换/大小写,我想避免这种情况。

这就是为什么我想改用 block ,但我真的不知道如何将参数化 block 存储在变量中。

我正在尝试做的事情:

声明一个函数 block doStuff

id (^doStuff) (int, int, int) = ^(int A, int B, int C) {
    //does Stuff
};

并添加之前创建的 block 作为回调

[Cell addCallback:(^doStuff)(1, 2, 3)];

block 不能在那一刻被调用,而是存储在单元格中,只有在合适的时候才调用它。 我将如何正确地处理这个问题?

非常感谢。

编辑:我还想避免的是将 block 的参数存储在单元格中并在调用时传递它们,因为这会要求我不必要地进一步专门化单元格。

最佳答案

听起来你想要的是一个调用你的 block 的 block ,像这样:

[cell addCallback:^{ doStuff(1, 2, 3); }];

但这是一个相当奇怪和令人费解的设计。似乎有一种方法可以只用一个 block 来编写它,但是如果不更好地了解您在做什么,就很难给出具体的解决方案。

关于Objective-C - 带有回调参数的存储 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13835099/

相关文章:

ios - 如何根据通知类型禁用通知?

c++ - 按值传递的结构,在 C -> C++ 回调函数 (gcc 4.1) 期间损坏

ios - 在 Objective-C 中找不到带有 Swift 类参数的方法

iphone - 应用程序能否为 Spotlight 提供 Hook 以在应用程序内搜索内容?

objective-c - 在重写的类方法中调用 super

ios - 如何在 iOS App Store 上部署 Vue Native 应用程序?

javascript - 在 Javascript 中继续之前如何等待多个 facebook graph api 调用?

android - 启动画面android phonegap计时

ios - NSDateFormat dd/MM/yyyy 到 MM/dd/yyyy iOS

iphone - SQLite查询使用SQLite的“like”子句查找相似的单词