摘要:
可能存在循环依赖,比如 Parent 强制有 Child, Child 弱持有 Parent。具体实现如下。Parent 初始化时,必须传入 Child,而 Child 初始化不必传入 Parent。protocol ParentProtocol: AnyObject { }protocol ChildProtocol: AnyObject { }class Parent: ParentProto... 阅读全文
摘要:
Object Scopes 指定了生成的实例在系统中是如何被共享的。 如何指定 scopecontainer.register(Animal.self) { _ in Cat() } .inObjectScope(.container)例子如上,每次 register 方法,都会返回 ServiceEntry 实例,然后调用其 inObjectScope 方法,会设置其 objectSco... 阅读全文
摘要:
核心是 Container类。它提供了两类方法,register 和 resolve。 为了找到在 resolve 时,能够找到对应的方法,内部维护了一个叫做services 的字典。key 是根据 serviceType、name、argumentsType 确定的。在 register 时,会字典里加入一个条目。在 resolve 时,会根据字典,找到对应的 ServiceEntryPro... 阅读全文
摘要:
数据绑定的多种实现方法想法在didSet 方法里,通知观察者支持多个观察者支持取下监听无需显式取消监听,在销毁时自动取消监听代码public final class Box { public typealias Listenr = (T) -> Void private var observers: NSHashTable private var managerKey: Voi... 阅读全文