Комментарии 6
Дайте угадаю. У вас есть некий singleton god object, который грузит кучу всего при инициализации, которая при этом не ленивая и происходит в +load
? Иначе трудно объяснить выполнение какого-либо кода до вызова UIApplicationMain()
Почему же, создаёте main.swift и пишете там что угодно, а потом зовёте UIApplicationMain. Делать так, конечно, не надо, но это же вполне возможно без load/initialize, конструкторов динамических либ и прочей изотерики. При этом создаваемый контейнер может быть и не синглтоном, а инициализировать свои поля может и лениво. А сделать контейнер, не являющийся god object, ещё надо постараться - это для подавляющего числа приложений (даже сложных) просто непрактично.
Лезть в main - последнее дело. Для этого нужны очень веские причины. Об этом не пишут на StackOverflow. Я представлял скорее среднего иосника злоупотребляющего антипаттернами, который легко мог бы допустить подобный косяк.
Что касается DI-контейнера (если вы его имели в виду), то оный не является god object, так как выполняет одну единственную задачу - построение графа объектов. При условии избегания антипаттерна сайд эффекта в инициализаторе, всё будет нормально.
God-объекта у нас нет, но верно подмечено, что был собственный DI контейнер. К сожалению, по недосмотру, некоторые объекты инициализировались гораздо раньше необходимого, что и привело к таким результатам. После этой ситуации мы вынесли некоторые уроки и стали чуточку более опытными :)
Как iOS 15 сломала авторизацию на два месяца. Хронология и лечение от СберМаркета