본문 바로가기

프로그래밍

(93)
Filling a Table with Data data source object를 사용하여 테이블의 셀을 동적으로 만들고 설정하거나 스토리보드에서 정적으로 제공한다. Overview 테이블 뷰는 인터페이스의 데이터 기반 요소이다. data source object, 즉 UITableViewDataSource 프로토콜을 채택하는 오브젝트를 사용하여 해당 데이터의 각 부분을 화면에 렌더링하는 데 필요한 뷰와 함께 앱의 데이터를 제공한다. 테이블 뷰는 화면에 뷰를 정렬하고 data source object와 함께 작동하여 해당 데이터를 최신 상태로 유지한다. 테이블 뷰는 데이터를 행과 섹션으로 구성된다. 행은 개별 데이터 항목을 표시하고 섹션은 관련 행을 함께 그룹화한다. 섹션은 필수는 아니지만 이미 계층적인 데이터를 구성하는 좋은 방법이다. 예를 들어,..
UITableView 단일 열에 배열 된 행을 사용하여 데이터를 표시하는 View이다. Declartion class UITableView : UIScrollView OverView iOS의 TableView는 행으로 분할 된 수직 스크롤 콘텐츠의 단일 열을 표시한다. 테이블의 각 행에는 앱 콘텐츠 하나가 포함된다. 예를 들어 연락처 앱은 각 연락처의 이름을 별도의 행에 표시하고 설정 앱의 메인 페이지에는 사용 가능한 설정 그룹이 표시된다. 하나의 긴 행 목록을 표시하도록 테이블을 구성하거나 콘텐츠를 보다 쉽게 탐색 할 수 있도록 관련 행을 섹션으로 그룹화 할 수 있다. 테이블은 일반적으로 데이터가 고도로 구조화되거나 계층적으로 구성된 앱에서 사용된다. 계층적 데이터를 포함하는 앱은 종종 네비게이션 뷰 컨트롤러와 함께 테이블..
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이 적절한..