Вопрос проверяет умение критически анализировать API и видеть архитектурные компромиссы даже в стандартных библиотеках.
Да, в iOS SDK можно найти примеры нарушений SOLID, чаще всего из-за исторических причин. Самый популярный пример — UIViewController, который часто нарушает Single Responsibility. Он одновременно управляет жизненным циклом, UI, навигацией и бизнес-логикой. Также встречаются нарушения Interface Segregation в delegate-протоколах. Это не означает, что SDK плохой, но показывает важность архитектурных решений на уровне приложения.
Несмотря на высокое качество iOS SDK, в нём есть архитектурные компромиссы.
UIViewController:
управляет жизненным циклом
реагирует на события системы
управляет иерархией view
часто содержит бизнес-логику
Это приводит к появлению «Massive View Controller».
Многие delegate-протоколы:
содержат много необязательных методов
требуют реализации @objc optional
навязывают лишние обязанности
обратная совместимость
развитие SDK без breaking changes
ориентация на простоту входа
Выносить бизнес-логику из ViewController
Использовать архитектуры (MVP, MVVM, VIPER)
Дробить ответственность на сервисы
Примеры нарушений SOLID в SDK — это не ошибка Apple, а результат компромиссов. Задача разработчика — компенсировать их на уровне архитектуры приложения.