Возвращает ли расширение каждый раз новый экземпляр - PullRequest
0 голосов
/ 20 января 2019

Рассмотрим этот случай, переменную, объявленную в extension, вот так.

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

Возвращает ли это расширение новый экземпляр каждый раз, когда я вызываю его из другого UIViewController, если да, то как это влияет на память?

Если нет, то это может вызвать проблему, что я получаю один и тот же экземпляр для всех UIViewController, в которых я использую этот экземпляр, и, как вы можете сказать, это экземпляр APIClient, который используется для внедренный в другой экземпляр класса GateWay, может ли это привести к проблеме в будущем?

Примечание : GateWay класс - это экземпляр класса, который я использую для выполнения запросов API, каждый кусок сервисов имеет свой собственный шлюз.

Я знаю, что могу использовать протокол, чтобы применять правила к желаемому UIViewController, чтобы каждый раз создавать экземпляр.

Чего я хочу добиться, так это писать меньше кода с меньшими проблемами в будущем и удалять ненужные куски кода.

1 Ответ

0 голосов
/ 20 января 2019

Да, каждый раз, когда вы получаете доступ к apiClient из любого viewController, будет возвращаться новый экземпляр APIClient.

Поскольку переменная apiClient равна get only, так что это само по себе не может вызвать какие-либопроблемы с памятью.

...