gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:15:28 24 4
gpt4 key购买 nike

在进行 iOS 开发时,我一直使用委托(delegate)模式在类之间传递数据。最近我读到回调通常是比委托(delegate)更好的选择。我只是想知道我这样做是否正确。下面是我的代码

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 类,但反之则不然” - ?

谢谢

最佳答案

是的,您的理论是正确的!回调是一种很好的开始方式,它依赖于抽象(类型签名)而不是具体化(将实现功能的类)。不过,您可以通过以下几种方式清理 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)
}

关于ios - 这是在 Swift 中使用回调的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39048121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com