# SwiftUI: впечатления iOS-разработчика о реактивном UI-фреймворке и его синтаксисе

DevFeed: [SwiftUI: впечатления iOS-разработчика о реактивном UI-фреймворке и его синтаксисе](<https://devfeed.tech/articles/article-34264.md>)

Original publisher: [Read original article](<https://tonsky.livejournal.com/324649.html>)

Published: 2020-01-18T15:36:57Z

Content type: opinion

Language: ru

Sources: [Tonsky Стой под стрелой](<https://devfeed.tech/sources/tonsky.md>)

Topics: [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [foreach](<https://devfeed.tech/tags/foreach.md>), [ios](<https://devfeed.tech/tags/ios.md>), [livejournal](<https://devfeed.tech/tags/livejournal.md>), [padding](<https://devfeed.tech/tags/padding.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [tag-5e1c061eda96](<https://devfeed.tech/tags/tag-5e1c061eda96.md>), [tag-c40b78a8c8a6](<https://devfeed.tech/tags/tag-c40b78a8c8a6.md>), [tag-d16a2c26554f](<https://devfeed.tech/tags/tag-d16a2c26554f.md>), [tag-e3028c5e0ab2](<https://devfeed.tech/tags/tag-e3028c5e0ab2.md>), [ui](<https://devfeed.tech/tags/ui.md>), [view](<https://devfeed.tech/tags/view.md>)

## AI overview

An experienced iOS developer shares impressions of SwiftUI after using it for roughly six months and releasing two production applications. The article praises its reactive, data-driven UI model and previews while criticizing its syntax, element-count limitation, opaque types, and inconsistent modifier and container design.

## Source excerpt

Если вдруг вы еще не знаете, примерно полгода назад Эппл анонсировало новый UI фреймворк -- SwiftUI. Событие очень серьезное, и как iOS разработчик со стажем я тут же переключился на него -- сначала попробовать, а потом уже и выпускать production приложения. Спустя полгода и два заапрувленных релиза, хочу поделиться с вами мыслями о SwiftUI. Во-первых, то, что Эппл выпустило нормальный реактивный data-driven UI фреймворк, заслуживает исключительно всяческих похвал. Правильный тренд, правильный подход, _почти_ интерактивное превью, все вовремя и к месту. Нам, iOS-программистам, чего-то такого сильно не хватало. Во-вторых (и тут уже о сомнительном), количество синтаксического сахара, которым они там обмазываются, вызывает, скажем так, удивление. Им пришлось серьезно расширить язык, чтобы вместо условно VStack( Image(uiImage: image), Text(title), Text(subtitle) ) можно было писать VStack { Image(uiImage: image) Text(title) Text(subtitle) } На что только люди не пойдут чтобы избежать споров о том где ставить запятую! Работает это благодаря вот такому вот прекрасному интерфейсу: То есть не только не очень понятно зачем так усложнять себе жизнь, но еще и больше 10 элементов не засунешь. Может быть создатели руководствовались правилом 7±2 и решили, что пользователи айфона не смогут всерьез осознать более 10 одновременных элеметов на экране. То что в этом интерфейсе пропилена специальная дырка для if напрягает если честно еще больше: Не самим фактом дырки, а вопросом, где же собственно дырки под все остальное? (на самом деле, если хочется больше 10 элементов, есть целый специальный компонент -- ForEach, который -- уберите детей от экрана! -- принимает список) (этот курьез и необходимость вводить opaque types заставляет задуматься, насколько сильно нам вообще нужна статическая типизация и какой ценой. Конечно, сторонники статической типизации скажут, что это просто типизация неправильная, вот была бы правильная и проблем бы не было -- что, в общем-то, универсальный аргумент, удобн