Вместо того, чтобы создавать зависимость внутри, объект получает ее извне.

Зачем вам нужно беспокоиться?

С DI ваш код становится:

  1. Легче протестировать
  2. Легче продлить
  3. Легче использовать повторно

Распространенные шаблоны DI в какао:

  1. Внедрение конструктора

При необходимости зависимость передается объекту как часть самого создания объекта.

2. Внедрение собственности

Когда необходимая зависимость передается путем установки значений состояния объекта или свойства.

3. Внедрение метода

Когда требуется, зависимость передается путем вызова методов к объектам, которые при необходимости обновляют начальное состояние объекта.

Какао широко использует все эти три шаблона DI.

Если вы использовали раскадровки или xibs, при создании IBOutlet он использует внедрение свойств для загрузки их с начальными значениями.

Распространенные антипаттерны DI:

  1. Ублюдочная инъекция
  2. Урод контроль

Стандартные контейнеры DI:

  1. Разработчик интерфейса
  2. Тайфун https://github.com/appsquickly/Typhoon
  3. Быстрая инъекция https://github.com/Swinject/Swinject