01 2019 档案

Swinject 源码框架(三):Object Scopes
摘要:Object Scopes 指定了生成的实例在系统中是如何被共享的。 如何指定 scopecontainer.register(Animal.self) { _ in Cat() } .inObjectScope(.container)例子如上,每次 register 方法,都会返回 ServiceEntry 实例,然后调用其 inObjectScope 方法,会设置其 objectSco... 阅读全文

posted @ 2019-01-19 21:03 花老🐯 阅读(734) 评论(0) 推荐(0) 编辑

Swinject 源码框架(二):循环依赖的解决
摘要:可能存在循环依赖,比如 Parent 强制有 Child, Child 弱持有 Parent。具体实现如下。Parent 初始化时,必须传入 Child,而 Child 初始化不必传入 Parent。protocol ParentProtocol: AnyObject { }protocol ChildProtocol: AnyObject { }class Parent: ParentProto... 阅读全文

posted @ 2019-01-19 21:03 花老🐯 阅读(702) 评论(0) 推荐(0) 编辑

Swinject 源码框架(一):基本原理
摘要:核心是 Container类。它提供了两类方法,register 和 resolve。 为了找到在 resolve 时,能够找到对应的方法,内部维护了一个叫做services 的字典。key 是根据 serviceType、name、argumentsType 确定的。在 register 时,会字典里加入一个条目。在 resolve 时,会根据字典,找到对应的 ServiceEntryPro... 阅读全文

posted @ 2019-01-19 21:01 花老🐯 阅读(1016) 评论(0) 推荐(0) 编辑

利用属性观察器实现数据绑定
摘要:数据绑定的多种实现方法想法在didSet 方法里,通知观察者支持多个观察者支持取下监听无需显式取消监听,在销毁时自动取消监听代码public final class Box { public typealias Listenr = (T) -> Void private var observers: NSHashTable private var managerKey: Voi... 阅读全文

posted @ 2019-01-19 09:32 花老🐯 阅读(151) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示