본문 바로가기

전체 글

(129)
MVVM(Model-View-ViewModel) 패턴 MVVM이란? "코드 구성" 아키텍처 디자인 패러다임. "반응형" 유저-인터페이스 개념과 함께 동작. swiftUI가 작동하려면 준수해야 한다. MVC(Model View Controller)와 다른 점은 UIKit (old-style iOS)을 사용하느냐의 차이 Model UI에서 독립적이다. UI는 SwiftUI를 import하지 않는다. 데이터와 로직을 캡슐화한다. View 뷰는 모델을 반영한다. data는 항상 Model에서 View로 향한다. View는 거의 상태가 없다. 대부분의 상태는 Model에서 결정되기 때문이다. 따라서 View는 자신의 상태를 가지지 않는다. View는 선언형 이라고 한다. 선언형이란? 무언가를 작업하기 위하여 어떻게 진행할 것인지를 나열하는 것을 뜻한다. ViewMo..
Responding to Memory Warnings 시스템에서 요청하면 메모리를 확보하시오. Overview 시스템의 여유 메모리가 부족하고 일시 중단 된 앱을 종료하여 메모리를 회수 할 수 없는 경우 UIKit은 실행중인 앱에 메모리 부족 경고를 보낸다. UIKit은 다음과 같은 방법으로 메모리 부족 경고를 제공한다. 앱 대리자의 applicationDidReceiveMemoryWarning(_:) 메서드를 호출한다. 활성 UIViewController 클래스의 didReceiveMemoryWarning() 메서드를 호출한다. 등록 된 관찰자에게 didReceiveMemoryWarningNotification 오브젝트를 게시한다. DISPATCH_SOURCE_TYPE_MEMORYPRESSURE 유형의 큐를 dispatch 하도록 경고를 전달한다. 앱에 ..
Performing One-Time Setup for Your App 앱 환경의 적절한 설정을 확인하시오. Overview 사용자가 앱을 처음 시작할 때 일부 일회성 작업을 수행하여 앱 환경을 준비할 수 있다. 예를 들어 다음을 수행 할 수 있다. 서버에서 필요한 데이터를 다운로드한다. 문서 템플릿 또는 수정 가능한 데이터 파일을 App Bundle에서 쓰기 가능한 디렉터리로 복사한다. 사용자에 대한 default preferences를 설정한다. 사용자 계정을 설정하거나 기타 필요한 데이터를 수집한다. App delegate의 application(_:willFinishLaunchingWithOptions:) 또는 application(_:didFinishLaunchingWithOptions:) 메소드에서 일회성 작업을 수행한다. 사용자 입력이 필요하지 않은 태스크에 대..
Responding to the Launch of Your App 앱의 데이터 구조를 초기화하고 앱이 실행되도록 준비하고 시스템의 모든 launch-time request에 respone한다. Overview 사용자가 홈 화면에서 앱 아이콘을 탭하면 시스템이 앱을 실행한다. 앱이 특정 이벤트를 요청한 경우 시스템은 해당 이벤트를 처리하기 위해 앱을 백그라운드에서 시작할 수도 있다. scene-based 앱의 경우 시스템은 scene 중 하나가 화면에 나타나거나 일부 작업을 수행해야 할 때 유사하게 앱을 시작한다. 모든 앱에는 UIApplication 오브젝트가 나타내는 관련 프로세스가 있다. 또한 앱에는 해당 프로세스 내에서 발생하는 중요한 이벤트에 응답하는 App delegate object(UIApplicationDelegate 프로토콜을 준수하는 오브젝트)가 있다..
Background Tasks 태스크를 실행하기 위해 백그라운드에서 앱을 시작하도록 시스템에 요청한다. Overview BackgroundTasks 프레임워크를 사용하여 앱 콘텐츠를 최신 상태로 유지하고 앱이 백그라운드에 있는 동안 완료하는 데 몇 분이 걸리는 태스크를 실행한다. 더 긴 태스크에는 선택적으로 전원이 공급되는 장치 및 네트워크 연결이 필요할 수 있다. 앱이 시작될 때 태스크에 대한 launch handler를 등록하고 필요에 따라 스케줄링한다. 시스템은 백그라운드에서 앱을 시작하고 작업을 실행한다. [원문] Apple Developer Documentation developer.apple.com
Preparing Your UI to Run in the Background 앱이 일시 중지되도록 준비한다. Overview 앱은 여러 가지 이유로 백그라운드 상태로 이동한다. 사용자가 포어그라운드 앱을 종료하면 해당 앱은 UIKit에서 일시 중지하기 전에 잠시 백그라운드 상태로 이동한다. 시스템은 앱을 직접 백그라운드 상태로 시작하거나 일시 중단 된 앱을 백그라운드로 이동하여 중요한 태스크를 수행 할 시간을 제공 할 수도 있다. 앱이 백그라운드에 있을 때 가능한 한 적은 작업을 수행해야 하며 가급적 아무 작업도 수행하지 않아야 한다. 앱이 이전에 포어그라운드에 있었던 경우 백그라운드 전환을 사용하여 작업을 중지하고 공유 리소스를 해제한다. 앱이 중요한 이벤트를 처리하기 위해 백그라운드로 들어가면 이벤트를 처리하고 최대한 빨리 종료하시오. 모든 상태가 전환되면 UIKit이 적절한..
Preparing Your UI to Run in the Foreground 화면에 표시되도록 앱을 설정한다. Overview foreground transitions을 사용하여 앱의 UI가 화면에 표시되도록 준비한다. 앱이 포어그라운드로 전환되는 것은 일반적으로 유저 액션에 대한 응답이다. 예를 들어 사용자가 앱 아이콘을 탭하면 시스템이 앱을 실행하고 포어그라운드로 가져온다. 포어그라운드 전환을 사용하여 앱의 UI를 업데이트하고, 리소스를 획득하고, 유저 리퀘스트를 처리하는 데 필요한 서비스를 시작하시오. 모든 상태가 전환되면 UIKit가 적절한 delegate object에 notifications을 보낸다. iOS 13 이상 - UISceneDelegate object iOS 12 이하 - UIApplicationDelegate object 두 가지 유형의 delegate ..
Specifying the Scenes Your App Supports 각 Scene 및 초기 사용자 인터페이스를 관리하는 데 사용하는 오브젝트를 포함하여 앱의 Scene에 대해 시스템에 알린다. Overview iOS 13 이상에서 사용자는 앱 UI의 여러 개의 복사본을 만들고 앱 전환기(swicher)에서 전환 할 수 있다. iPad에서 사용자는 다른 복사본과 함께 앱 UI 복사본 하나를 나란히 표시 할 수도 있다. 앱 UI의 각 복사본에 대해 Scene 오브젝트를 사용하여 UI를 화면에 표시하는 창, 뷰 및 뷰 컨트롤러를 관리한다. 사용자가 새 scene을 요청하면 UIKit은 해당 scene 오브젝트를 만들고 초기 설정을 처리한다. 이를 위해 UIKit은 사용자가 제공하는 정보에 의존한다. 앱은 지원하는 scene의 유형과 해당 scene을 관리하는 데 사용하는 오브..