На мой взгляд, одна из лучших книг про #Combine , все достаточно подробно описано, дополнено примерами
#readthis
#readthis
heckj.github.io
Using Combine
SwiftUI dev pinned «На мой взгляд, одна из лучших книг про #Combine , все достаточно подробно описано, дополнено примерами #readthis»
Отличная лайвкодинг-сессия с подходом UDA на примере #Redax в SwiftUI
LiveCoding: SwiftUI with unidirectional architecture
#watchthis
LiveCoding: SwiftUI with unidirectional architecture
#watchthis
YouTube
LiveCoding: SwiftUI with unidirectional architecture / Алексей Демедецкий
Купить билеты на iOS Ukraine #2, которая пройдет 17 Мая 2021 можно по ссылке:
https://2event.com/events/1863065#/
Подписывайтесь на наши соц сети:
Twitter: https://twitter.com/iOSUkraine
Telegram Channel: https://t.me/iOSUkraine
Telegram Chat: https://t…
https://2event.com/events/1863065#/
Подписывайтесь на наши соц сети:
Twitter: https://twitter.com/iOSUkraine
Telegram Channel: https://t.me/iOSUkraine
Telegram Chat: https://t…
SwiftUI dev
📖 Весьма подробная презентация “Demystify SwiftUI” #watchthis
❗️Главное:
1. ❌ Не использовать AnyView, строится неоптимальный код
2. 📖 В SwiftUI два типа identity у View: structural и explicit, в UIKit - pointer identiity
3. 👆🏻 If-else - относится к structural типу. If-else разворачивается «под капотом» в
4. ☝🏼 Стараться по возможности минимизировать ветвление If-else, например, заменяя легкими модификаторами. Это, как минимум, улучшает отрисовку анимации. Если не получается, то стараться «бранчевать» ниже всего в иерархии view: так как sui оптимизирован из коробки, будут перерисоваться только те view, у которых сменился identity.
5. ☝🏼 В
6. 🤷🏼♂️ Использование UUID спасает во многих ситуациях, но считается не лучшей практикой: неожидаемая отрисовка анимации в списке, когда новый элемент надо поместить в начало списка
#readthis
1. ❌ Не использовать AnyView, строится неоптимальный код
2. 📖 В SwiftUI два типа identity у View: structural и explicit, в UIKit - pointer identiity
3. 👆🏻 If-else - относится к structural типу. If-else разворачивается «под капотом» в
_ConditionalContent
с новым Branch.4. ☝🏼 Стараться по возможности минимизировать ветвление If-else, например, заменяя легкими модификаторами. Это, как минимум, улучшает отрисовку анимации. Если не получается, то стараться «бранчевать» ниже всего в иерархии view: так как sui оптимизирован из коробки, будут перерисоваться только те view, у которых сменился identity.
5. ☝🏼 В
ForEach
рекомендуется использовать strong explicit identity (например, явный id объекта, взятый из БД)6. 🤷🏼♂️ Использование UUID спасает во многих ситуациях, но считается не лучшей практикой: неожидаемая отрисовка анимации в списке, когда новый элемент надо поместить в начало списка
#readthis