Dario Talarico

2个Pod
编写异步、健壮和响应式的应用实在太难了。
在 iOS 的情况下,这是因为我们一直在使用错误的抽象级别:NSOperationQueues、dispatchsemaphorecreate、dispatchsemaphorewait以及其他低级别的GCD函数和结构。
使用 Actor 模型,我们可以提高抽象级别,并提供一个更好的平台来构建正确并发的可扩展应用。
Theater 是开源的,并遵守 Apache 2 许可协议。
Theater 受 Akka 启发。
Twitter = [@TheaterFwk](https://twitter.com/TheaterFwk)
ruby pod 'Theater'
Actor 应该是 Actor 类的子类
swift public class Dude : Actor {
为了“监听”消息,Actor 必须重写 receive 方法:```swift override public func receive(msg : Message) -> Void {
} ```
为了展开消息,你可以使用 switch
swift override public func receive(msg : Message) -> Void { switch (msg) { case let m as Hi: m.sender! ! Hello(sender: self.this) case is Hello: print("收到 Hello") default: print("什么?") } }
所有消息都必须是 Message 的子类:```swift
public class Hi : Message {}
public class Hello : Message {}
```
Actor 生活在 actor 系统中,Theater 提供了一个默认的系统
swift let system : ActorSystem = AppActorSystem.shared
整合一切
```swift import Theater
public class Hi : Message {}
public class Hello : Message {}
public class Dude : Actor { override public func receive(msg : Message) -> Void { switch (msg) { case let m as Hi: m.sender! ! Hello(sender: self.this) case is Hello: print("收到 Hello") default: print("什么?") } } }
... (在应用委托内部)
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let system : ActorSystem = AppActorSystem.shared
let dude1 = system.actorOf(Dude.self, name: "dude1")
let dude2 = system.actorOf(Dude.self, name: "dude2")
dude2 ! Hi(sender : dude1)
```
输出将是:swift Tell = Optional("dude1") <Actors.Hi: 0x7bf951a0> dude2 Tell = Optional("dude2") <Actors.Hello: 0x7be4bc00> dude1 收到 Hello
许可证:[Apache-2.0](https://api.github.com/licenses/apache-2.0)