[SwiftUI] re-rendering, re-draw 추측 에서 SwiftUI가 내부적으로 리렌더링을 어떻게 결정하는 지 추측해보았는데요 리렌더링을 커스터마이징 (?) 할 수 있는 방법도 있습니다. # 1. SwiftUI 는 다시 안그리는데, 나는 다시 그리고 싶은 경우 뷰는 extract subview를 하면 별도의 identity를 부여받아, 부모 뷰와 같이 리렌더링이 안됩니다. 부모의 body가 재호출될 때 extracted 한 서브뷰를 항상 같이 다시 그리고 싶으면 id를 활용합니다. [ 기본 동작 ] ContentView의 body가 호출될 때 NoMatterText는 다시 안그려짐 struct ContentView: View { @State private var isOn = true pri..
[ 인트로 ] SwiftUI는 state-driven, data-driven 방식으로 state 가 변하면 view 를 다시 그립니다 (body를 호출하여) 하지만 body를 재호출한다고 모든 것을 다시 그리는 것이 아니라 변경이 필요한 부분만 다시 렌더링 합니다. 그렇다면.. re-rendering 또는 re-draw를 결정하는 SwiftUI의 diff 판단 로직은 어떻게 될까요? (= body가 호출될 때 무엇을 다시 그리고, 무엇을 다시 안그릴 지 어떻게 결정할까요?) WWDC21 - Demystify SwiftUI 를 보면 identity, life time, dependencies 이 세가지 요인이 메인요소인 것 같습니다. 저는 이 중에서 identity 위주로 저의 re-rendering 추측..
Library, Framework, Swift Package 궁금한 것들을 확인해보고 정리합니다. 테스트를 위한 MyApp workspace 를 하나 만들고 시작합니다. [1] Library # 만들기 File > New > Project > Static Library 선택 MyStaticLibrary 라는 이름으로 만들고 아래처럼 경로 / Add to / Group 을 설정해줍니다. # 기본 정보 Target에 가보면 Mach-O Type이 static library 로 세팅 되어있으며 (Project는 Mach-O Type이 명시 안되어있음) 앱에 embed 하면 .a 확장자를 볼 수 있습니다. # 궁금! 만약 Mach-O Type 을 dynamic library 로 바꾸면..?! 다시 import를..
[1] ISA Swizzling Method Swizzling이 런타임에 특정 메서드를 다른 메서드로 바꿔서 실행될 수 있게 하는 것이라면, ISA Swizzling은 런타임에 특정 객체를 다른 객체로 바꿔서 실행될 수 있게 하는 것을 말합니다. (isa 는 포인터를 의미합니다) object_setClass 를 이용해서 isa swizzling을 할 수 있습니다. 예를들어 나의 커스텀 탭바를 사용하고 싶은 상황을 봅시다. TabBarController의 tabBar 프로퍼티는 get only 이고 이를 세팅할 수 없는 이니셜라이저나 메소드가 없습니다. 이 때 isa swizzling을 통해 기본 탭바를 서브클래싱한 커스텀 탭바를 사용할 수 있습니다. private class CustomTabBar: UI..
- Total
- Today
- Yesterday
- Django Heroku Scheduler
- METAL
- ipad multitasking
- github actions
- drf custom error
- Dart Factory
- ribs
- Watch App for iOS App vs Watch App
- cocoapod
- Django FCM
- Django Firebase Cloud Messaging
- DRF APIException
- SerializerMethodField
- 장고 Custom Management Command
- Flutter Clipboard
- flutter 앱 출시
- Python Type Hint
- Flutter 로딩
- PencilKit
- Flutter Text Gradient
- flutter deep link
- 구글 Geocoding API
- Sketch 누끼
- flutter build mode
- Flutter getter setter
- flutter dynamic link
- Flutter Spacer
- 장고 URL querystring
- 플러터 싱글톤
- 플러터 얼럿
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |