Интерфейс Builder не делает никакой инъекции зависимостей. Это не нужно. Интерфейс Builder сериализует объекты. Когда нить «проснулся» (он же открыт), «никаких зависимостей» не существует - есть только свойства, которые нужно установить. Очень, очень просто. Открытие наконечника основывается исключительно на протоколе NSCoding и кодировании ключевого значения.
Зависимость впрыска, в значительной степени проект работы в лучшие времена или, в лучшем случае, обобщенный слой клея между компонентами, разработанными независимо, бесполезна в хорошо написанном коде Objective-C. Вы просите инструмент, который вам не нужен.
В Objective-C программное обеспечение, требующее анонимной услуги, объявляет протокол. Затем службы принимают этот протокол. Клиенты загружают службы как динамические плагины. С другой стороны, если сервер был написан до клиента, это просто вопрос написания нового подключаемого модуля, который адаптирует существующий интерфейс к протоколу. Это меньше работает и более прямолинейно, чем попытка определить промежуточную управляемую данными систему для «обнаружения» (пожалуйста) интерфейса во время выполнения.
Разве не очевидно, что большой секрет DI заключается в том, что это способ писать код в XML вместо родного языка? Мне бы очень хотелось услышать хороший аргумент о том, как XML - это как-то лучший язык программирования, чем настоящий язык программирования. Это не имеет никакого смысла.
заказ из www.typhoonframework.org – 2013-02-20 03:36:10
А вот еще один https://github.com/railsware/BloodMagic – AlexDenisov 2013-11-17 11:52:24
Java, безусловно, по-прежнему считается поздним связыванием языка.Хотя он использует диспетчер типа vtable, например C++, благодаря наличию виртуальной машины и системы загрузчика классов, все же возможен перехват методов во время выполнения. Этот подход несколько более громоздкий, чем обмен сообщениями (цель-с), и требует более сложного инструментария, чтобы упростить его использование - такие вещи, как динамические прокси-серверы JSDK, cglib/asm или агент JVM. Это позволяет использовать такие функции, как AOP или «управляемые объекты» (данные спящего/ядра), но имеет мало общего с DI. Я не думаю, что * * java static - требует DI, Objective-C dynamic '*. – 2015-04-23 02:13:02