Sergey Vashchenko: к слову, примеры кода от Apple плохие. Но не в том смысле что не правильно работают, а в том, что они показывают пример работы с какими-то конкретными вещами, и совершенно не парятся о структуре проекта, правильном расположении методов и прочего (это не цель их примеров)
Sergey Vashchenko: да по сути что хотите. Для зависимостей 2 возможности Cocoapods и Carthage. У каждого свои плюсы и минусы, почитайте, выберите что больше вам нравится (либо попробуйте оба). Из паттернов на iOS набирает популярность Flow Controllers (штука довольно старая, но раньше на неё особо внимание не обращали) и конечно же DI. Язык Swift, про ObjC забудьте, если какая-то компания использует для разработки ObjC, вы туда идти не хотите.
Petrushka: потому что это связывает этот контроллер с его окружением, о котором он не должен знать. Соответственно в будущем, если потребуется вынести этот экран из стека на пример в попап, или в меню, или в таб, будут проблемы. Если вдруг порядок экранов поменяется, снова у нас проблемы. Переиспользовать этот экран в другом месте будет тоже проблематично.
Alex Rubera: на будущее: вы скорее всего хотите, что UICollectionViewDelegateFlowLayout был отдельный объект, а UICollectionViewDelegate, UICollectionViewDataSource был другой объект адаптер. Потому что, чем большее задач решает каш контроллер тем хуже
Виталий: У стак вью ставим растягивание "детей". Главному стак вью ставим либо константную ширину/высоту, либо добавляем констрейны к какому-нибудь другому родительскому/соседнему вью.
Евгений Конкин: соответственно количество секций это количество элементов в массиве groups у Provider'а, количество ячеек в секции это количество элементов в массиве elements у соответствующей Group'ы
Tommy32: да, семафором вы из асинхронного реквеста, сделали синхронный, в итоге, если вы его вызываете на главном потока (а я уверен что вы вызываете его из главного потока), то всё приложение фризится и никак не реагирует на пользователя. Как результат, его удаляют как "лагающее и тормозящее"