这是在Swift中使用回调的正确方法吗?

时间:2016-08-19 21:47:49

标签: ios swift callback

在进行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班级,但反过来却不正确” - ?

由于

1 个答案:

答案 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)
}