View 4

[iOS] SwiftUI : View update에 대한 고찰

BackgroundSwiftUI는 선언형 기반으로 구현하도록 설계되어 있다. 이 선언형의 관점을 이해하기 위해서는 함수형 프로그래밍에 대한 깊이있는 이해가 필요하다. Immutable type을 왜 쓰는지, Value type을 왜 사용하는지, 순수함수를 왜 쓰고 어떻게 비지니스 로직을 구현해야 하는지 등이다. 그리고 SwiftUI의 동작 체계에 대한 이해도 필요하다. View의 업데이트는 어떻게 이루어지는지, 이에 대한 최적화 작업은 어떻게 해야 하는지 등이다. SwiftUI를 가볍게만 사용하던지라 이에 대한 이해가 부족했고, 그러기에 이에 대해서 정리하려고 합니다. SwiftUI가 iOS 13부터 지원했지만, 최근까지 버그도 많고 아직 기술 자체가 덜 성숙했던지라 어떤 변화가 생겼는지 정도만 관심을 ..

[iOS] SwiftUI Foundation

ProtocolsApp 프로토콜 앱의 구조를 설정하기 위한 프로토콜. @main을 통해서 main() 메소드의 기본 구현을 통해 entry point를 제공한다. Scene 프로토콜을 구현하여 App의 body를 구현한다. 각 scene은 각각의 root view와 life cycle을 가진다. 모든 scene을 넘어서 데이터를 공유하기 위해서 App을 구현한 곳에 StateObject 등을 구현하여 사용하는 방법이 있다. 공유하는 데이터의 성격에 따라 ObserbedObject나 EnvironmentObject 등을 사용한다. @preconcurrency @MainActor는 기본적으로 상속됨으로써 isolation 처리되어 있다. @MainActor를 opt out 처리하기 위해서는 extension..

[iOS] UIViewController 심층 분석

View Controller View controller는 앱의 UI를 꾸미는 view들을 관리한다. 개발할 기능과 시각적 요소를 제공하기 위해서 view controller를 상속받아 클래스를 구현한다. view controller는 관리하고 있는 view들과 엮여 있으며 event를 처리하기 위한 Responder chain에 관여한다. view controller는 UIResponder 객체로서, 해당 view controller의 root view와 super view 사이의 Responder chain에 위치한다. view controller의 view가 event를 처리하지 않는다면 해당 event를 super view로 넘길 수 있다. 그리고 다른 view controller를 contain..

[iOS] WKWebView (instead of UIWebView)

기존 UIWebView는 무겁고 복잡하고 메모리 누수가 있다. 심지어 니트로 자바스크립트 엔진을 장착한 모바일 사파리에 비해 느리다. WWDC 2014에서 새로 소개된 WKWebView는 AppKit의 WebView와 UIKit의 UIWebView를 대체하고, 양 플랫폼의 동일한 API를 제공하는 새로운 Webview이다. 60fps 스크롤링, 빌트인-제스처, App-WebPage 간 커뮤니케이션을 제공한다. UIWebView와 WKWebView의 큰 차이점은 2가지가 있다. 먼저 UIWebView는 UIKit에 구현되어 있어, 따로 import가 필요하지 않다. 그래서 Interface builder에서 사용할 수 있다. 그 다음, WKWebView는 javascript 최적화를 위해 별도의 프로세스를..