【发布时间】:2019-01-20 09:41:23
【问题描述】:
考虑这种情况,在extension 中声明的变量,像这样。
extension UIViewController {
var apiClient: APIClient {
return APIClientImplementation()
}
}
每次我从不同的UIViewController 调用它时,这个扩展是否会返回一个新实例,如果是这样,这会如何影响内存?
如果不是这会导致问题,我会为我正在使用此实例的所有 UIViewController 获取相同的实例,并且您可以告诉它过去是一个 APIClient 实例注入到GateWay 类的另一个实例中,这会导致将来出现问题吗?
注意:
GateWay类是我用来执行 API 请求的类实例,每个服务块都有自己的网关。
我知道我可以使用协议在所需的UIViewController 上应用规则以每次创建实例。
我正在努力实现的是在未来编写更少的代码和更少的问题,并删除不必要的代码块。
【问题讨论】:
-
虽然我无法理解这个问题,但基本上
apiClient确实每次都会返回一个新实例......默认情况下,它应该在视图控制器获取时被释放解除分配。 -
所以在任何时候都不会出现内存拥挤或崩溃,因为这个实例可以被带到后台线程工作
标签: swift memory foundation swift-extensions