0

我在我的 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 实例现在应该消失了吗?因为不是。它仍然在调试内存图中显示为泄漏。 看截图

我想这不是预期的行为?我错过了什么吗?对我来说,它看起来像一个错误,它弄乱了我的整个设置。我们能做些什么呢? GitHub问题

4

1 回答 1

0

没有内存泄漏,这只是 Xcode 8 内存分析工具中的一个错误。请参阅GitHub 问题跟踪器中的讨论

在此处输入图像描述

于 2017-09-03T17:16:03.580 回答