Dario Talarico

2个Pod

BFGallery

许可证:[Apache-2.0](https://api.github.com/licenses/apache-2.0)

剧院

编写异步、健壮和响应式的应用实在太难了。

在 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)

  • Swift