注入 class 而不是实例时内存泄漏?

Memory leak when injecting class instead of instance?

如果我将依赖项作为 classes 而不是作为实例注入,我是否容易受到内存泄漏的影响?我想这样做的原因是我正在集成的第 3 方库仅公开 class 方法。 如果我这样做会很危险吗? (以及为什么以及何时会出现这种危险):

var service: ServiceProtocol.Type

init(withService service: ServiceProtocol.Type = Service.self) {
        self.service = service
    }

然后在 class 中我只是调用这样的方法:

self.service.doSomething()

很安全。 Service.self只是对类型的引用,类型无论如何都存在于程序的整个运行过程中,因此不会引入任何额外的开销。

在这种情况下,您应该注意的一件事是分配 "static" 内存。例如,如果 self.service.doSomething() 将一个元素添加到作为 class 的静态字段的数组中,请确保在不再需要时清除它。否则它将保留在内存中,直到程序终止。