Может ли кто-нибудь порекомендовать хорошую инфраструктуру IoC для iOS, чтобы облегчить внедрение зависимостей?
Единственный, который у меня есть? На данный момент найдено Objection Framework , которое, по-видимому, похоже на Guice (которое, к сожалению, мне незнакомо). Является ли этот вариант обычным выбором для iOS и есть ли конкурирующие структуры, которые стоит проверить?
... есть ли конкурирующие фреймворки, которые стоит проверить?
Возражение - это библиотека DI, которую я могу найти в Google для iOS, так что вы можете застрять с ним, если вы хотите предварительно встроенную библиотеку.
DI специально не требует основы для использования. Если ваше приложение маленькое, вы можете просто создать все свои экземпляры в корне приложения и ввести вручную.
Если вам нужно больше, чем это, и существующие фреймворки не делают этого за вас, вы можете свернуть свой собственный Service Locator, а затем построить DI-контейнер поверх него.
Вы также можете перенести существующий меньший фреймворк с другой платформы. В .Net есть несколько «маленьких», например - Ninject и SimpleInjector .
Это один из распространенных вариантов для iOS ...?
Кажется, что это довольно маленький проект, поскольку в списке указан только один автор / участник. Там не так много вопросов, поданных. Рынок iOS довольно большой, хотя. Поэтому я думаю, что только очень небольшая часть всех разработчиков iOS использует эту библиотеку.
1114 Но это не обязательно плохо. Кажется, что он создан, используется и поддерживается небольшой компанией . Это было довольно устойчивые обновления за прошедший год .
Мой анекдотичный опыт работы с проектами с открытым исходным кодом схожей области применения: я не всегда получаю новые функции слишком часто, и я часто заканчиваю тем, что нахожу ошибки Но я склонен очень быстро получать поддержку существующего набора функций, и большое внимание уделяется поддержке отправленных мною электронных писем. YMMV.
Тайфун
На веб-сайте Тайфун перечислены основные функции. Краткое резюме:
Неинвазивный. Никаких макросов или XML не требуется. Конфигурирование выполняется с использованием Objective-C или Swift API , который использует преимущества среды выполнения Objective-C.
Легкий вес . Всего 2500 строк кода. Он занимает очень мало места, поэтому подходит для устройств с ограниченным процессором и памятью. Настроен на производительность.
Позволяет легко иметь несколько конфигураций одного базового класса или протокола.
Нет волшебных строк - поддерживает рефакторинг IDE, завершение кода и проверку во время компиляции.
Поддерживает внедрение контроллеров представления и интеграцию раскадровки.
Поддерживается как инициализация, так и внедрение свойств, а также управление жизненным циклом.
Мощные функции управления памятью. Предоставляет предварительно сконфигурированные объекты без использования памяти синглетонов.
Отличная поддержка циклических зависимостей.
Испытано в бою - используется во всех видах приложений с магазином приложений.
Международная распределенная основная команда (мы даже отслеживаем StackOverflow), поэтому поддержка по любым вашим вопросам всегда рядом:)
Документы API и примеры app
Что ж, надеюсь, вы простите мне небольшую заглушку, но я только что выпустил свою собственную структуру DI для Objective-C: Шприц
https: // github. com / tomekc / Syringe
Он упрощен и легок по назначению, моей главной целью было сделать его как можно более навязчивым. У меня сильный Java-опыт, поэтому я разработал его после Google Guice и Spring.