菜鸟教程小白 发表于 2022-12-13 01:09:07

ios - NSOperation 等待依赖完成成功 block


                                            <p><p>我在这个例子中使用了 AFNetworking,但我认为它与 NSOperation 更相关。我有两个操作,一个依赖于另一个整理。然而 op2 真的不应该在 op1 的成功 block 完全运行之前运行。在操作队列中存在依赖关系的情况下,op2 将在 op1 完成后立即运行,但在 op1 的成功 block 完成之前。</p>

<pre><code>AFHTTPRequestOperationManager *manager = ;
NSURLRequest *request = ;
NSOperation *op1 = [http.manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id userLocations) {
   NSLog(@&#34;Success&#34;);
   // do some stuff

   // more stuf

   // I am done, ready for the next operation.
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
   NSLog(@&#34;Error: %@&#34;, error);
}];
NSOperation* op2 = // create op, this will depend on op1 finishing
;// op2 is dependent on op1 finishing

waitUntilFinished:NO];
</code></pre>

<p>这对我来说不太适用,因为 op2 依赖于 op1 的成功 block 中设置的一些东西。这意味着 op2 在 op1 完成其成功 block 之前无法启动。</p>

<p>NSOperations 有没有办法让它们排队,这样每个 block 都可以等到 block 也完成运行?如果不是,我该如何重新设计来完成这种依赖关系。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我的结构会有所不同,在第一个操作中设置第二个操作。像这样:</p>

<pre><code>AFHTTPRequestOperationManager *manager = ;
NSURLRequest *request = ;
NSOperation *op1 = [manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id userLocations) {
    NSLog(@&#34;Success&#34;);
    // do some stuff

    // more stuf

    // I am done, ready for the next operation.
    // SO put the other operation here!
    NSOperation* op2 = // create op, this will depend on op1 finishing

    ;

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@&#34;Error: %@&#34;, error);
}];
;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - NSOperation 等待依赖完成成功 block ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/25457550/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/25457550/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - NSOperation 等待依赖完成成功 block