菜鸟教程小白 发表于 2022-12-13 09:36:55

ios - 序列化 web 服务调用和回调


                                            <p><p>我有一个发送 web 服务调用并通过委托(delegate)传递响应的类。
我现在想在 View 和我的 web 服务类之间添加一个缓存层。
这个新类应该序列化调用,每次调用都会延迟到前一个调用的回调完成。</p>

<p>我试图通过 GCD 实现这一点:</p>

<pre><code>- (void)callWebserviceFunctionX {
    dispatch_group_notify(self.serviceGroup, self.serialQueue, ^{
      dispatch_group_enter(self.serviceGroup);

      // call webservice
    });
}
</code></pre>

<p>在回调中:</p>

<pre><code>-(void)callbackFunctionXWithResponse:(id)response {
    // do something

    dispatch_group_leave(self.serviceGroup);
}
</code></pre>

<p>使用 <code>dispatch_group_enter</code> 和 <code>dispatch_group_leave</code> 将每个调用及其回调分组并使用 <code>dispatch_group_notify</code> 等待之前的组的想法。</p>

<p>但是,这种方法似乎没有按我的预期工作。
有没有更好的方法来实现这一点?</p>

<p><strong>更新:</strong><br/>
我尝试了 <code>dispatch_group_enter</code>、<code>dispatch_group_leave</code>、<code>dispatch_group_notify</code> 和 <code>dispatch_group_async</code> 的所有组合,但没有成功。<br/>
我也考虑过 <code>NSOperation</code> 和 <code>NSOperationQueue</code>,但是 - 如果我理解正确 - 这将迫使我为每个 web 服务调用编写一个单独的类。</p>

<p>还有其他我没有想到的选择吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我认为你最好使用 NSOperation,它们之间的依赖关系以确保序列化和 NSOperationQueue 来运行它们。</p>

<p>为了避免为每个请求创建一个 NSOperation 子类,您可以使用内置的 NSBlockOperation,您为每个实例提供一个 block ,并在 NSBlockOperation 实例之间添加依赖项应该为您提供目标序列化。</p>

<p>希望这会有所帮助。</p>

<p>问候</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 序列化 web 服务调用和回调,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/26489965/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/26489965/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 序列化 web 服务调用和回调