프로그래밍 (93) 썸네일형 리스트형 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을 관리하는 데 사용하는 오브.. Managing Your App's Life Cycle 앱은 포그라운드 또는 백그라운드에 있을 때 시스템 notification에 응답하고 기타 중요한 시스템 관련 이벤트를 처리한다. Overview 앱의 현재 상태에 따라 언제든지 할 수 있는 작업과 할 수 없는 작업이 결정된다. 예를 들어 포그라운드 앱은 사용자의 주의를 끌기 때문에 CPU를 포함한 시스템 리소스보다 우선한다. 반대로 백그라운드 앱은 화면 밖이기 때문에 가능한 한 작업을 거의 수행하지 않아야 한다. 앱이 상태별로 변경되면 그에 따라 동작을 조정해야 한다. 앱의 상태가 변경되면 UIKit은 적절한 델리게이트 오브젝트의 메서드를 호출하여 알려준다. iOS 13 이상에서는 UISceneDelegate 오브젝트를 사용하여 scene-based 앱의 라이프 사이클 이벤트에 응답한다. iOS 12 및.. 프로세스 동기화(Process Synchronization)란 무엇인가? 경쟁 상황(race condition) 동시에 여러 개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황 이를 해결하기 위해 프로세스들이 동기화 될 수 있도록 할 필요가 있다. 임계구역 문제(Critical-Serction Problem) 프로세스 동기화에 대한 논의는 임계구역 문제라고 불리는 문제부터 시작한다. 한 프로세스가 자신의 임계구역에서 수행하는 동안에는 다른 프로세스들은 그들의 임계구역에 들어갈 수 없다 라는 특징이 있다. 진입을 요청하는 코드를 진입 구역(entry section)이라고 부른다. 코드의 나머지 부분을 나머지 구역(remainder section)이라고 부른다. 임계구역 문제의 해결 방법 임계 구역 문제는 다음의 세 가지 요.. Test-Driven Development(TDD)란 무엇인가? Test-Driven Development(TDD)란? 작성해야 하는 프로그램에 대한 테스트를 먼저 작성하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다. 여기서 만드는 테스트도 그 자체로 하나의 프로그램이며 프로그램의 요구사항을 반영할 수 있게 만든다. 예를 들어 두 수를 더하는 add 함수를 만들어야 한다면 add 함수부터 만드는 것이 아니라 다음과 같은 testAdd 함수를 먼저 만든다. func testAdd() { // 1. given let first = 5 let second = 4 // 2. when let result = calc.add(firstValue: first, secondValue: second) // 3. then XCTAssertEqual(result, 5.. Concurrency Programming Guide (6) - Migrating Away from Threads Grand Central Dispatch 및 operation object를 활용하기 위해 기존 스레드 코드를 전환하는 방법에는 여러 가지가 있다. 모든 경우에 스레드로부터 멀어 질 수는 없지만 전환을 수행하는 장소에서 성능(및 코드의 단순성)이 크게 향상 될 수 있다. 특히 스레드 대신 dispatch queue와 operation queue를 사용하면 다음과 같은 몇 가지 이점이 있다. 애플리케이션의 메모리 공간에 스레드 스택을 저장하기 위해 드는 메모리 부담을 줄일 수 있다. 스레드를 만들고 구성하는 데 필요한 코드를 제거할 수 있다. 스레드에 대한 작업을 관리하고 스케줄링하는 데 필요한 코드를 제거할 수 있다. 작성해야 하는 코드를 단순화할 수 있다. 이번 챕터에서는 기존 thread-based .. Concurrency Programming Guide (5) - Dispatch Sources 시스템과 상호 작용할 때마다 해당 태스크에 적은 시간이 걸리도록 준비해야 한다. 커널 또는 기타 시스템 계층으로 호출하려면 자체 프로세스 내에서 발생하는 호출에 비해 상당히 많은 비용이 드는 컨텍스트 변경이 포함된다. 따라서 대부분의 시스템 라이브러리는 코드가 시스템에 요청을 제출하고 해당 요청이 처리되는 동안 다른 작업을 계속할 수 있도록 비동기 인터페이스를 제공한다. Grand Central Dispatch는 리퀘스트를 보내고 결과를 블록 및 Dispatch Queue를 사용하여 코드에 다시 전달 할 수 있도록 하는 일반적인 동작으로 구성된다. About Dispatch Sources dispatch source는 특정 로우 레벨 시스템 이벤트의 처리를 조정하는 기본 데이터 유형이다. Grand Ce.. Concurrency Programming Guide (4) - Dispatch Queues GCD (Grand Central Dispatch) dispatch queue는 태스크 수행을 위한 강력한 도구이다. dispatch queue를 사용하면 호출자에 대해 비동기 또는 동기적으로 임의의 코드 블록을 실행할 수 있다. dispatch queue를 사용하여 별도의 스레드에서 수행하는 데 사용했던 거의 모든 태스크를 수행 할 수 있다. dispatch queue의 장점은 해당 스레드 코드보다 사용하기가 더 간단하고 실행 시 훨씬 효율적이라는 것이다. 이 챕터에서는 dispatch queue에 대한 소개와 이를 사용하여 애플리케이션에서 일반적인 태스크를 실행하는 방법에 대한 정보를 제공한다. About Dispatch Queues dispatch queue는 애플리케이션에서 비동기적으로 동시에 태.. 이전 1 ··· 7 8 9 10 11 12 다음