Swinject:使用弱范围是泄漏对象
Swinject: Using weak scope is leaking objects
我在 swift 项目中使用 Swinject 进行 DI。我认为使用弱对象范围会导致泄漏。
我有这个虚拟对象
protocol DevTestProtocol: class {}
class DevTest: DevTestProtocol {}
注册如下(我使用的是程序集)
container.register(DevTestProtocol.self) { _ in
return DevTest()
}
.inObjectScope(.weak)
出于测试目的,我在我的应用程序委托中添加了一个 属性
var devTest: DevTestProtocol?
在 applicationDidFinishLaunchingWithOptions 中,我解析了对象然后忘记了它
self.devTest = DI.resolve(DevTestProtocol.self)!
self.devTest = nil
DevTest 实例现在应该已经消失了吗?
因为它不是。它仍然在调试内存图中显示为泄漏。
see screenshot
我想这不是预期的行为?我错过了什么吗?
对我来说这看起来像是一个错误,它弄乱了我的整个设置。
我们能做些什么呢?
GitHub issue
没有内存泄漏,这只是 Xcode 8 种内存分析工具中的错误。请参阅 GitHub issues tracker
上的讨论
我在 swift 项目中使用 Swinject 进行 DI。我认为使用弱对象范围会导致泄漏。
我有这个虚拟对象
protocol DevTestProtocol: class {}
class DevTest: DevTestProtocol {}
注册如下(我使用的是程序集)
container.register(DevTestProtocol.self) { _ in
return DevTest()
}
.inObjectScope(.weak)
出于测试目的,我在我的应用程序委托中添加了一个 属性
var devTest: DevTestProtocol?
在 applicationDidFinishLaunchingWithOptions 中,我解析了对象然后忘记了它
self.devTest = DI.resolve(DevTestProtocol.self)!
self.devTest = nil
DevTest 实例现在应该已经消失了吗? 因为它不是。它仍然在调试内存图中显示为泄漏。 see screenshot
我想这不是预期的行为?我错过了什么吗? 对我来说这看起来像是一个错误,它弄乱了我的整个设置。 我们能做些什么呢? GitHub issue
没有内存泄漏,这只是 Xcode 8 种内存分析工具中的错误。请参阅 GitHub issues tracker
上的讨论