公告

CI

一种用于向注册观察者广播信息的事件分发机制。 它类似于 NSNotificationCenter,但有一些显著的区别

示例

// Any type can be made Announceable
extension String : Announceable { }

let announcer = Announcer()

// Subscribe to observe values of an Announceable type
let subscription = announcer.when(String.self) { (aString, anAnnouncer) in
    print("World says: \(aString)")
}

// Notify observers by announcing an Announceable value
announcer.announce("Drink Water!")

// Stop observing by removing the subscription object
announcer.remove(subscription: subscription)

// Alternatively, use an arbitrary object for managing subscriptions:
announcer.when(String.self, subscriber:self) { (aString, anAnnouncer) in
    print("Received announcement: \(aString)")
}

// Unsubscribe when no longer interested
announcer.ubsubscribe(self)

线程

在幕后,一个 Announcer 保存着一个所有 SubscriptionRegistry。 对该注册表的访问由读写锁控制,从而使操作是线程安全的,确保在所有公告都处理完毕之前不会对注册表进行任何更改,并且在注册表内容正在被修改时不会处理任何公告。 公告的处理可以并发进行。 有关详细信息,请参阅测试...