在Objective-C中混合块和代表

时间:2015-04-22 18:55:30

标签: ios objective-c objective-c-blocks

代理收到消息时是否可以运行阻止?

例如,如果我有一个框架将void块作为参数(我们称之为"成功"块),并且正在使用NSURLConnection委托来处理那些方法参数,当我从网页收到回复时,我该如何调用"成功"块传递方法参数?

这对我来说很难解释,我显然没有任何代码,但我可以澄清你是否有任何问题。

1 个答案:

答案 0 :(得分:3)

你绝对可以。这就是所有完成处理程序/回调的工作方式。实际上,这就是

的块。

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

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

对于第三个参数,您传递一个块。当请求结束时,将来的某个时间,NSURLConnection会做什么?它调用块。

所以,你可以做与NSURLConnection完全相同的事情。你可以编写一个带块的方法,你坚持使用块,你做一些可能需要一些时间的事情,然后你调用块。