在 Objective-C 中混合块和代表

Mixing Blocks and Delegates in Objective-C

当委托人收到消息时是否可以运行阻止?

例如,如果我有一个将 void 块作为参数的框架(我们将其称为 "success" 块),并且使用 NSURLConnection 委托来处理这些方法参数,当我收到网页的响应时,如何调用方法参数中传递的"success"块?

真的我很难解释,我显然没有任何代码,但如果你有任何问题我可以澄清。

你绝对可以。这就是 all 完成处理程序/回调的工作方式。事实上,这就是一个块 for.

举一个简单的例子,考虑这个 NSURLConnection class 方法:

+ (void)sendAsynchronousRequest:(NSURLRequest *)request
                          queue:(NSOperationQueue *)queue
              completionHandler:(void (^)(NSURLResponse *response,
                                          NSData *data,
                                          NSError *connectionError))handler

对于第三个参数,你传递一个块。而当请求全部结束时,在未来的某个时间,NSURLConnection 做了什么?它调用 块。

因此,您可以执行与 NSURLConnection 完全相同的操作。您可以编写一个采用块的方法,抓住块,做一些可能需要一些时间的事情,然后 调用块。