
App 생명주기 App의 실행/종료 및 App이 Foreground/Background 상태에 있을 때, 시스템이 발생시키는 event에 의해 App의 상태가 전환되는 일련의 과정 App 상태 5가지 1. Not Running : 앱이 실행되지 않았거나, 완전히 종료되어 동작하지 않는 상태 2. Inactive : 앱이 실행되면서 foreground에 진입하지만, 어떤한 이벤트도 받지 않는 상태 (앱의 상태 전환 과정에서 잠깐 머무는 단계, alert가 올라와서 앱이 이벤트를 받지 못하는 상황) ex) 전화가 왔을 때, 시스템 메시지가 떴을 때(배터리 부족) 3. Active : 앱이 실행 중이며, foreground에 있고, 이벤트를 받고 있는 상태 4. Background : 앱이 백그라운드에 있으며..
AppDelegate.swift의 역할 1. AppDelegate클래스를 정의 AppDelegate.swift의 존재로 -> AppDelegate 클래스가 생성됨 -> 이 클래스의 인스턴스인 app delegate(우리 앱의 객체) -> 앱의 상태에 따라 응답하는 콘텐츠가 그려지는 창(window)을 만듬 2. entry point와, 앱의 입력 이벤트를 전달하는 run loop를 생성 Apple이 기본적으로 제공하는 AppDelegate 메소드 func application(_: didFinishLaunchingWithOptions: ) -> Bool : 이 메서드 안에서 application의 setup을 진행 func application(_: configurationForConnecting:opt..
Delegate란? 어떤 객체가 해야 하는 일을 부분적으로 확장해서 다른 객체가 대신 처리를 한다. Delegate 패턴을 사용하는 이유 객체가 어떤 일을 처리하기에는 부담스러워 처리해야 할 일 중 일부를 다른 객체에게 넘기기 위해서 사용 방법 1. Delegate 채택 (프로토콜 채택) class ViewController: UIViewController, UITableViewDelegate { // ... } 또는 class ViewController: UIViewController { // ... } extension ViewContoller: UITableViewDelegate { } (extension을 사용해서 UITableViewController 채택) 2. 위임자 설정 class View..
Singleton Pattern 특정 용도로 객체를 하나만 생성하여, 공용으로 사용하고 싶을 때 사용하는 디자인 유형 = 이 클래스에 대한 Instance는 최초 생성될 때 딱 한번만 생성해서 전역에 두고, 그 이후로는 이 Instance만 접근 가능하게 하는 것 = 한 Instance에 어디 클래스에서든 접근 가능 Singleton Class 만드는 방법 1. static 프로퍼티로 Instance 생성하기 class UserInfo { static let shared = UserInfo() var id: String? var password: String? var name: String? } static을 이용해서 Instance를 저장할 프로퍼티를 하나 생성 2. init 함수 접근제어자를 pri..

Main Thread - iOS에서 Main Thread는 오직 한 개만 존재 - Interface Thread라고도 불리는데, UI와 관련된 작업은 Main Thread에 붙기 때문 - UI와 관련된 작업은 반드시 Main Thread에서 작성해야 한다. - Main Thread는 Main Queue에서 실행되는데, Main Queue가 Serial Queue라서, 한번에 한 개의 Task밖에 실행하지 못함 - UI를 실행하는 데에 영향을 줄만한(시간이 오래 걸리는) 코드들은 Main Thread에서 실행하면 안되고, Global Thread로 실행시켜 줘야 한다. Global Thread (Background Thread) - iOS에서 Framework들은 모두 Background에서 구동이 된다...

Synchronous(동기) 동시에 발생하는 -> 여기서 동시 발생은 작업이 동시 발생 X, '요청 - 응답' 이 동시 발생한다는 뜻 요청에 대한 응답이 동시에 발생야 한다. -> 내 작업이 끝나기 전까진 다른 작업을 수행하지 못한다. 장점 - 설계가 매우 간단하고 직관적임 단점 - 응답이 주어질 때까지 아무것도 못하고 대기 Asynchronous(비동기) 동시에 발생하지 않는 요청에 대한 응답이 동시에 발생하지 않는다. -> 내 작업이 끝나기 전에 다른 작업을 수행할 수 있다. 장점 - 응담이 주어질 때까지 기다리지 않고 다른 작업을 하므로 자원을 효율적으로 사용 가능 단점 - 동기보다 설계가 복잡 Serial 순차적인 * Sync와 Serial은 다른 개념 - Sync는 앞 작업과 뒷 작업의 연관성에..

프로세스(Process) 운영체제로부터 시스템 자원을 할당받은 작업의 단위 프로세스들은 각각의 독립된 메모리 영역 (Code, Data, Stack, Heap)을 각자 할당 받는다. 따라서 프로세스끼리는 서로의 변수나 자료구조에 대해 절대 접근할 수 없다. A 프로세스가 B프로세스 자원 접근하려고 하면 프로세스간 동신(IPC)를 사용해야 한다. 멀티 프로세스(Multi Process) 하나의 프로그램을 여러 개의 프로세스로 구성하여, 각 프로세스마다 하나의 작업(Task)씩 처리하도록 하는 것 ex) 알람 - 알람 시간 조정 동작을 구현하는 프로세스 - 알람 시간이 울리기까지 계산하는 프로세스 - 알람이 울리는 프로세스 장점 - 프로세스 간 서로의 자원에 접근할 수 없음 -> 독립된 구조이기 때문에 안정..
- App 생명 주기 상태에 접근하기 위해 AppDelegate.swift 파일을 사용 - 프로젝트 내의 AppDelegate.swift 안에서 관리되는 생명 주기 - AppDelegate는 앱의 상태에 따라 실행되는 Delegate 메소드를 담고 있다. application(_:willFinishLaunchingWithOptions:) App이 최초 실행될 때 호출되는 메소드 Not Running -> Foreground 로 상태 변환 application(_:didFinishLaunchingWithOptions:) App이 실행 직후 화면이 사용자에게 보여지기 직전에 호출 초기화 코드 작성 applicationDidBecomeActive(_:) App이 Active 상태로 전환되어 화면이 나타난 후 ..
Comment