扩展每次都会返回新实例吗

时间:2019-01-20 09:41:24

标签: swift memory foundation swift-extensions

考虑这种情况,像这样在extension中声明的变量。

extension UIViewController {
    var apiClient: APIClient {
        return APIClientImplementation()
    }
}

每次我从不同的UIViewController调用该扩展名时,它是否都会返回一个新实例,如果这样的话,这会如何影响内存?

如果这可能不会引起问题,则说明我在使用该实例的所有UIViewController实例中都得到了相同的实例,正如您可以告诉它的APIClient实例那样,曾经被注入到GateWay类的另一个实例中,这将来会导致问题吗?

  

注意GateWay类是我用来执行API请求的类实例,每个服务块都有自己的网关。

我知道我可以使用协议将规则应用于所需的UIViewController来每次创建实例。

我要实现的目标是,将来编写更少的代码,减少问题,并删除不必要的代码块。

1 个答案:

答案 0 :(得分:0)

是的,每次您从任何partitionMap访问val (pears, apples) = Set(Apple(1, 10), Pear(2, "red"), Apple(4, 6)).partitionMap { case pear: Pear => Left(pear) case apple: Apple => Right(apple) } // pears: Set[Pear] = Set(Pear(2, "red")) // apples: Set[Apple] = Set(Apple(1, 10), Apple(4, 6)) 时,都会返回一个新的apiClient实例。

由于viewController变量为APIClient,因此它本身不会引起任何内存问题。

相关问题