【发布时间】:2016-11-02 09:49:36
【问题描述】:
当我们调用一些代码并需要一个带有多个参数的响应时,我们在 Swift 中有多个选项:
- 完成块
- 委托
- 输入参数
- 包装对象(只需将所有参数放在一个对象中)
我想知道是否有一些关于何时使用什么的好指南?具体来说,什么时候使用 inout 代替委托会是一种不好的做法?
非常具体: 还有一个例子可以用来解释: 我的 A 类与 B 类通信。A 类需要一个数据列表和一个可选错误。
所以现在我倾向于使用输入输出: A类:
var error = ServiceError()
let wordSuggestions = B.parseSuggestionResponse(json: result as! NSDictionary, error: &error)
if error.type == .none {
// Success, now use wordSuggestions for something!
} else {
self.handleError(error: error)
}
这种方法与使用委托相比有一些缺点吗?
【问题讨论】:
-
您可能还想将NotificationCenter 和KVOs 添加到选项列表中。
-
确实它们也是选项,但我认为它们是特殊情况。 NotificationCenter 通常仅在您希望某些内容全球化时使用,而 KVO 通常用于与 UI 相关的内容。
标签: swift