【发布时间】:2015-06-28 23:51:21
【问题描述】:
我在请求失败块中发布通知:
[manager POST:path
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (operation.response.statusCode == 200) {
//message delegate
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[[NSNotificationCenter defaultCenter] postNotificationName:HOST_UNREACHABLE object:operation];
}];
在接收通知的方法中,completionBlock属性为nil。
如何在没有子类化和覆盖的情况下访问它?
【问题讨论】:
-
你能澄清一下吗?您有一个需要完成和失败块的请求。在失败块中,您发布通知。其他一些对象观察通知并运行一个方法,该方法想要查看请求完成块?如果我有这个权利,请展示您如何初始化完成块,展示在通知时触发的另一个类中的方法。
-
@danh 完成,使用 AFNetworking 管理器
-
抱歉,最后一部分还是没看懂。 nsnotification 的观察者永远不会获得块参数,它只会获得发布的通知。也许描述您希望在该方法中发生的事情并发布您迄今为止编码的内容。
-
以操作为对象获取通知。当我从 notification.object.completionBlock 读取该对象时,它是 nil。
-
抱歉 - 我错过了您将操作作为通知对象传递。我不能肯定地说,但是 AFHTTP 操作在调用错误时消除完成块是合理的,反之亦然。在它调用它之后将它运行的块清零也是一个好习惯。您可以将自己的一个或两个块的副本放在堆栈上(在一个范围为运行请求的方法的变量中)并将它们传递给通知。我可以向您展示如何做到这一点,但这似乎非常奇怪。你能解释一下你希望完成什么吗?
标签: objective-c afnetworking objective-c-blocks nsoperation afhttprequestoperation