考虑这种情况,像这样在extension
中声明的变量。
extension UIViewController {
var apiClient: APIClient {
return APIClientImplementation()
}
}
每次我从不同的UIViewController
调用该扩展名时,它是否都会返回一个新实例,如果这样的话,这会如何影响内存?
如果这可能不会引起问题,则说明我在使用该实例的所有UIViewController
实例中都得到了相同的实例,正如您可以告诉它的APIClient
实例那样,曾经被注入到GateWay
类的另一个实例中,这将来会导致问题吗?
注意:
GateWay
类是我用来执行API请求的类实例,每个服务块都有自己的网关。
我知道我可以使用协议将规则应用于所需的UIViewController
来每次创建实例。
我要实现的目标是,将来编写更少的代码,减少问题,并删除不必要的代码块。
答案 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
,因此它本身不会引起任何内存问题。