首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS:存储和触发回调块

iOS:存储和触发回调块
EN

Stack Overflow用户
提问于 2014-04-08 11:04:07
回答 1查看 1.2K关注 0票数 3

我试图找出是否有一种标准的方法来存储回调块,并让它稍后执行,而不需要将块存储在属性或字典中。

设想以下场景:

我有一个类,假设是MyApiClient,它有一个名为getListOfBooksWithCompletionHandler:(void (^))completion的方法,在请求完成时调用完成块。到目前为止还不错。

在内部,MyApiClient必须调用其他API的一些方法,这些方法不提供完成,而只提供块,只有委托调用。

这意味着我需要在某个地方存储回调块,直到从另一个API调用相应的委托方法为止。

在过去的一个项目中,我通过将回调块存储在NSMutableDictionary中来解决这个问题,并使用某种唯一标识符在委托调用期间找到它。

但是,对于我来说,这就像是不需要的样板代码,,所以我的问题是:是否有一个最佳实践/API来更优雅地做到这一点?也许某种机制允许我用一个特定的ID来存储这个块,并简单地触发一个将调用发送到该块的信号?

在谷歌和苹果的文档中都找不到这方面的信息。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-04-08 12:14:46

我建议您将完成块存储在类的属性中。

代码语言:javascript
运行
复制
@property (nonatomic, copy) void (^completionHandler)(parameters ...);

并为每个请求创建单独的实例。然后,每个实例都可以保存一个特定请求的块和其他状态信息。它还可以作为您正在使用的“其他API”的委托。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22935050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档