SwiftUI和Combine都是苹果开发者大会WWDC 2019中发布的,两者都是声明式(declarative )编程:一个是针对UI实现,一个是针对app中的并发执行管理。下面就先简单介绍一下他们,之后我也会写更深入的SwiftUI和Combine的学习笔记。
SwiftUI
SwiftUI可以直接通过拖拉的方式,自动为我们写code,并实时预览;declarative编程也让我们的代码更resuable,其他开发者读起来也方便!虽然刚刚发布,很多库都不全,但毫无疑问SwiftUI比之前的UI实现更简单、功能更强大!既然是新东西,当然要来一个hello world
struct ContentView: View {
var body: some View {
Text("Hello World")
}
}
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
这样你就可以在xcode右侧见到
Combine
从2009年微软创造了Rx.Net开始,Reactive Programming响应式编程就出现在了开发的世界里,之后就相继出现了各种语言的Reactive框架RxJS, RxPHP, RxJava等,也有RxSwift,而且已经存在了一段时间了,但毕竟是第三方的框架,而且学起来包括用起来都比较复杂,就没得到广泛的应用;
但是Combine的出现就表明苹果也要往declarative, reactive programming方向走了,以前我们想实现同步执行时,一般会用到NotificationCenter, delegate pattern, gcd&operation, closures等,因为我们无法控制同步执行的任务结束时间等因素,管理app中的asynchronous codes就变得复杂起来。当然你要是根据使用场景选择合适的方法,并多加小心好好写的话也没问题;但用了combine之后,管理同步执行任务的方法就统一了起来,让我们的代码更简洁、易懂、可复用!
同样的Hello World:
let just = Just("Hello shit")
_ = just.sink(receiveCompletion: {
_ in
print("completed")
}, receiveValue: {
val in
print("\(val)")
})
// Hello World
// completed
如果你对combine和感兴趣的话,可以继续看我的下一篇文章