
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 상태로 전환되어 화면이 나타난 후 ..
방법 1 (박스오피스 앱) func getData() { // 1. URL 만들기 guard let url = URL(string: movieURL) else { return } // 2. URLSession 만들기 let session = URLSession(configuration: .default) // 3. URLSession 인스턴스에게 task 주기 let task = session.dataTask(with: url) { (data, response, error) in if error != nil { print(error!) return } guard let JSONdata = data else { return } let decoder = JSONDecoder() do { let decoded..
연산자 띄어쓰기와 연산자 스위프트에서는 띄어쓰기도 중요한 문법이다. 연산자가 어디에 위치하느냐도 중요하지만, 연산자 앞과 뒤 중 어디에 공백이 있는지도 중요한 부분 ex) A != B와 A! = B는 전혀 다른 의미 스위프트는 서로 다른 자료형끼리의 연산을 엄격히 제한한다. 서로 다른 자료형끼리의 연산을 실행하려면 값을 해당 타입으로 변환한 후 연산해야 한다. 비교 연산자 ==, === A == B : A와 B가 같은 값인지 비교하여 불리언 값을 반환 A === B : A와 B가 참조(레퍼런스) 타입일 때 A와 B가 같은 인스턴스를 가리키는지 비교하연 불리언 값을 반환 스위프트의 유일한 참조타입인 클래스의 인스턴스에서만 참조 비교 연산자를 사용 가능하다. 스위프트의 기본 데이터 타입은 모두 구조체로 구현..
타입 별칭 사용자가 임의로 만든 데이터 타입이든 이미 존재하는 데이터 타입에 임의로 다른 이름을 부여할 수 있다. typealias MyInt = Int typealias MyDouble = Double let age: MyInt = 24 let percentage: MyDouble = 25.5 튜플 타입의 이름이 따로 지정되어 있지 않은, 프로그래머 마음대로 만드는 타입. 지정된 데이터의 묶음 // String, Int, Double 타입을 갖는 튜플 var person: (String, Int, Double) = ("SDY", 100, 55.5) // 인덱스를 통해서 값을 빼 올 수 있다. print("이름: \(person.0), 나이: \(person.1), 몸무게: \(person.2)") //..
데이터 타입 데이터의 종류 스위프트의 기본 데이터 타입이 모두 구조체를 기반으로 구현되어 있음 Int, UInt Int : +, - 부호를 포함한 정수 UInt : - 부호를 포함하지 않는 0을 포함한 양의 정수 진수에 따른 정수 표현 방법 2진수 : 접두어 0b를 사용하여 표현 8진수 : 접두어 0o를 사용하여 표현 16진수 : 접두어 0x를 사용하여 표현 임의의 수 random(in:) Int.random(in: -100...100) UInt.random(in: 1...30) Double.random(in: 1.5...4.3) Float.random(in: -0.5...1.5) String // 이니셜라이저를 사용하여 빈 문자열을 생성할 수 있음 var hello: String = String() /..
print() 함수 디버깅 콘솔에 간략한 정보를 출력 출력하려는 인스턴스의 description 프로퍼티에 해당하는 내용을 출력 dump() 함수 자세한 정보를 출력 출력하려는 인스턴스의 자세한 내부 콘텐츠까지 출력 변수, 상수 타입 추론 : 변수를 생성할 때 데이터 타입을 생략하면 컴파일러가 변숫값의 타입을 추론하여 타입을 지정 var name = "bcd" print(type(of:name)) //String var height = 166.6 print(type(of:height)) //Double [출처 : Swift 프로그래밍 야곰]
Comment