在进行iOS开发时,我总是使用委托模式在类之间传递数据。最近我读到回调通常是比委托更好的选择。我只是想知道我是否正确这样做。以下是我的代码
class ViewControlleer: UIViewController {
let NS = NetworkServices()
let someNum = 10
func getData(){
NS.mainFunc(someNum, callback: { (newNum) -> Void in
let newNumber = newNum*50
print(newNumber)
})
}
}
class NetworkServices {
func mainFunc(num: Int, callback: (Int)-> Void){
let newNum = num*3
callback(newNum)
}
}
在我的代码中使用这种模式是不错的做法?这是正确的 - “ViewController
班级知道NetworkServices
班级,但反过来却不正确” - ?
由于
答案 0 :(得分:1)
是的,你的理论很有见!回调是一种很好的方式,可以根据抽象(类型签名)而不是结构(将实现该功能的类)开始。这里有几种方法可以清理你的Swift表示法:
尾随闭包 - Swift会从参数类型推断出你的回调类型,因此以下内容是等效的:
func getData(){
NS.mainFunc(someNum) { newNum in
let newNumber = newNum*50
print(newNumber)
}
}
方法作为函数 - 此表单可让您更清楚地命名:
func getData(){
NS.mainFunc(someNum, callback: myPrint)
}
func myPrint(newNum: Int) {
let newNumber = newNum*50
print(newNumber)
}