Как стать автором
Обновить

Как iOS 15 сломала авторизацию на два месяца. Хронология и лечение от СберМаркета

Время на прочтение4 мин
Количество просмотров5.6K
Всего голосов 14: ↑11 и ↓3+12
Комментарии6

Комментарии 6

Дайте угадаю. У вас есть некий singleton god object, который грузит кучу всего при инициализации, которая при этом не ленивая и происходит в +load? Иначе трудно объяснить выполнение какого-либо кода до вызова UIApplicationMain()

НЛО прилетело и опубликовало эту надпись здесь

Почему же, создаёте main.swift и пишете там что угодно, а потом зовёте UIApplicationMain. Делать так, конечно, не надо, но это же вполне возможно без load/initialize, конструкторов динамических либ и прочей изотерики. При этом создаваемый контейнер может быть и не синглтоном, а инициализировать свои поля может и лениво. А сделать контейнер, не являющийся god object, ещё надо постараться - это для подавляющего числа приложений (даже сложных) просто непрактично.

Лезть в main - последнее дело. Для этого нужны очень веские причины. Об этом не пишут на StackOverflow. Я представлял скорее среднего иосника злоупотребляющего антипаттернами, который легко мог бы допустить подобный косяк.

Что касается DI-контейнера (если вы его имели в виду), то оный не является god object, так как выполняет одну единственную задачу - построение графа объектов. При условии избегания антипаттерна сайд эффекта в инициализаторе, всё будет нормально.

God-объекта у нас нет, но верно подмечено, что был собственный DI контейнер. К сожалению, по недосмотру, некоторые объекты инициализировались гораздо раньше необходимого, что и привело к таким результатам. После этой ситуации мы вынесли некоторые уроки и стали чуточку более опытными :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий