ios - 在 Objective-C 中混合 block 和委托(delegate)

标签 ios objective-c objective-c-blocks

<分区>

是否可以在代理收到消息时运行 block ?

例如,如果我有一个将 void block 作为参数的框架(我们称它为“成功” block ),并且正在使用 NSURLConnection 委托(delegate)来处理这些方法参数,当我收到一个网页响应,如何调用方法参数中传递的“成功” block ?

这对我来说真的很难解释,显然我没有这方面的任何代码,但如果您有任何问题,我可以澄清。

最佳答案

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

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

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

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

因此,您可以执行与 NSURLConnection 完全相同的操作。您可以编写一个接受一个 block 的方法,您持有该 block ,您做一些可能需要一些时间的事情,然后稍后您调用该 block 。

关于ios - 在 Objective-C 中混合 block 和委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29806516/

上一篇:ios - 如何从 UIScrollView 获取 UIButton 位置

下一篇:ios - 单击时更改单元格上的按钮的图像

相关文章:

ios - 逐字搜索 API

iphone - 使用withObject:self和withObject:nil之间的区别

ios - 尝试删除表中的行时出现错误 'Invalid update: invalid number of rows in section 0'

ios - 向对象数组添加二级排序

ios - 使用AVQueuePlayer时无声音

ios - 在启动异步请求后如何保留对 UICollectionViewCell 的引用?

objective-c - 一次停止所有声音?

ios - NSStringEncoding到字符串

objective-c - 使用动画重新加载 Collection View

ios - 谁保留 block ?