gpt4 book ai didi

iOS:存储和触发回调 block

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:43 24 4
gpt4 key购买 nike

我正在尝试找出是否有一种标准的方法来存储回调 block 并在以后执行它而不使用将 block 存储在属性或字典中。

想象一下以下场景:

我有一个类,比如说 MyApiClient,它有一个名为 getListOfBooksWithCompletionHandler:(void (^))completion 的方法,当请求时调用完成 block 完成。到目前为止一切顺利。

在内部 MyApiClient 必须调用其他 API 的一些方法,这些方法不提供完成但阻塞,仅委托(delegate)调用。

这意味着我需要将回调 block 存储在某处,直到从其他 API 调用相应的委托(delegate)方法。

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

虽然对我来说这感觉像是不需要的样板代码,所以我的问题是:是否有最佳实践/API 可以更优雅地执行此操作?也许某种机制允许我存储具有特定 ID 的 block 并简单地触发一个将调用分派(dispatch)给 block 的信号?

使用 google 或 Apple 的文档无法找到很多相关信息。有什么想法吗?

最佳答案

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

@property (nonatomic, copy) void (^completionHandler)(parameters ...);

并为每个请求创建单独的实例。然后每个实例都可以持有 block 以及一个特定请求的其他状态信息。它也可以作为委托(delegate)对于您正在使用的“其他 API”。

关于iOS:存储和触发回调 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22935050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com