我有一个视图控制器对象A,它要求另一个对象B获取互联网数据。对象B实现:connectionDidFinishLoading:connection:
当对象B准备就绪并且有数据时,会调用上面的方法。但我想更新对象A的UI。最好的方法是什么?我想我必须使用协议吗?
答案 0 :(得分:2)
有不同的方法来处理这个问题。将对象A设置为对象B的委托将是一种完全有效的方式。然后,您将定义一个协议,对象B将使用该协议与对象A进行通信。
在请求数据的调用中将完成块从对象A传递到对象B的另一种方法。然后在对象B的connectionDidFinishLoading:connection:方法中,它将检查完成块是否为nil,如果它不是nil,则调用该块。
我最近越来越多地使用基于块的方法。设置较少,完成代码在对象A中调用对象B的方法中是正确的,因此更容易理解正在发生的事情。
您可能希望设置一个带有成功/失败参数的块,以及一个NSError对象。这样,如果连接失败,您可以优雅地处理它,如果您决定,甚至会向用户报告错误。