Подтвердить что ты не робот

Рекомендуемая структура IoC для iOS?

Может ли кто-нибудь рекомендовать хорошую среду IoC для iOS для облегчения инъекции зависимостей?

Единственное, что я нашел до сих пор, это Objection Framework, который, по-видимому, похож на Guice (который, к сожалению, мне незнаком). Является ли это общим выбором для iOS и существуют ли конкурирующие рамки, которые стоит проверить?

4b9b3361

Ответ 1

... есть конкурирующие рамки, которые стоит проверить?

Objection - это библиотека DI, которую я могу найти в google для iOS, поэтому вы можете застрять в ней, если хотите создать заранее созданную библиотеку.

DI специально не требует использования фреймворка. Если ваше приложение мало, вы можете просто создать все свои экземпляры в корне приложения и ввести вручную.

Если вам нужно больше этого, и существующие фреймворки не режут его для вас, вы можете перевернуть свой собственный локатор сервисов, а затем создать контейнер DI поверх него.

Вы также можете перенести существующую меньшую структуру с другой платформы. Есть несколько "маленьких" на .Net, например - Ninject и SimpleInjector.

Это один из распространенных вариантов для iOS...?

Похоже, что это довольно небольшой проект, так как есть только один автор/вкладчик. Не так уж много вопросов. Однако рынок iOS довольно большой. Поэтому я думаю, что только небольшая часть всех разработчиков iOS использует эту библиотеку.

Но это не обязательно плохо. Кажется, что создан, используется и поддерживается небольшой компанией. Он имел довольно устойчивые обновления за последний год.

Мой анекдотический опыт с аналогичными областями проектов с открытым исходным кодом: я не всегда получаю новые функции очень часто, и я часто тот, кто заканчивает поиск ошибок. Но я очень быстро получаю поддержку существующего набора функций, и большое внимание уделяется поддержке отправленных мной электронных писем. YMMV.

Ответ 2

Typhoon

Тайфун-сайт перечисляет основные функции. Краткое резюме:

  • неинвазивный. Никаких макросов или XML не требуется. Конфигурация выполняется с помощью Objective-C или Swift API, которая использует среду выполнения Objective-C.

  • Легкий вес. Всего 2500 строк кода. Он имеет очень низкую площадь, поэтому он подходит для устройств с ограничениями на процессор и память. Настроен на производительность.

  • Легко иметь несколько конфигураций одного и того же базового класса или протокола.

  • Нет магических строк - поддерживает рефакторинг IDE, завершение кода и проверку времени компиляции.

  • Поддерживает инъекцию контроллеров представлений и интеграцию с раскадрой.

  • Поддерживает как инициализацию, так и вложение свойств, а также управление жизненным циклом.

  • Мощные функции управления памятью. Предоставляет предварительно сконфигурированные объекты, без накладных расходов памяти для одиночных пакетов.

  • Отличная поддержка круговых зависимостей.

  • Battle-tested - используется во всех видах приложений, отличных от Appstore.

  • Являясь международно распределенной основной командой (мы даже контролируем StackOverflow), поэтому поддержка любого из ваших вопросов никогда не за горами:)

Документы API и пример приложения

Ответ 3

Ну, надеюсь, вы простите мне небольшую пробку здесь, но я только что выпустил свою собственную инфраструктуру DI для Objective-C: Шприца

https://github.com/tomekc/Syringe

Это простота и легкая цель, моя главная цель заключалась в том, чтобы сделать ее максимально ненавязчивой. У меня сильный фон Java, поэтому я разработал его после Google Guice и Spring.