iOS - Sync, Async, Serial, Concurrent
Language/Swift 2022. 10. 31. 19:21

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

iOS - 프로세스(Process) / 스레드(Thread)
Language/Swift 2022. 10. 31. 18:22

프로세스(Process) 운영체제로부터 시스템 자원을 할당받은 작업의 단위 프로세스들은 각각의 독립된 메모리 영역 (Code, Data, Stack, Heap)을 각자 할당 받는다. 따라서 프로세스끼리는 서로의 변수나 자료구조에 대해 절대 접근할 수 없다. A 프로세스가 B프로세스 자원 접근하려고 하면 프로세스간 동신(IPC)를 사용해야 한다. 멀티 프로세스(Multi Process) 하나의 프로그램을 여러 개의 프로세스로 구성하여, 각 프로세스마다 하나의 작업(Task)씩 처리하도록 하는 것 ex) 알람 - 알람 시간 조정 동작을 구현하는 프로세스 - 알람 시간이 울리기까지 계산하는 프로세스 - 알람이 울리는 프로세스 장점 - 프로세스 간 서로의 자원에 접근할 수 없음 -> 독립된 구조이기 때문에 안정..

iOS - AppDelegate
Language/Swift 2022. 10. 27. 16:45

- App 생명 주기 상태에 접근하기 위해 AppDelegate.swift 파일을 사용 - 프로젝트 내의 AppDelegate.swift 안에서 관리되는 생명 주기 - AppDelegate는 앱의 상태에 따라 실행되는 Delegate 메소드를 담고 있다. application(_:willFinishLaunchingWithOptions:) App이 최초 실행될 때 호출되는 메소드 Not Running -> Foreground 로 상태 변환 application(_:didFinishLaunchingWithOptions:) App이 실행 직후 화면이 사용자에게 보여지기 직전에 호출 초기화 코드 작성 applicationDidBecomeActive(_:) App이 Active 상태로 전환되어 화면이 나타난 후 ..

Swift 네트워킹 방법
Language/Swift 2022. 7. 11. 16:00

방법 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..

Swift - 05
Language/Swift 2022. 2. 8. 01:48

연산자 띄어쓰기와 연산자 스위프트에서는 띄어쓰기도 중요한 문법이다. 연산자가 어디에 위치하느냐도 중요하지만, 연산자 앞과 뒤 중 어디에 공백이 있는지도 중요한 부분 ex) A != B와 A! = B는 전혀 다른 의미 스위프트는 서로 다른 자료형끼리의 연산을 엄격히 제한한다. 서로 다른 자료형끼리의 연산을 실행하려면 값을 해당 타입으로 변환한 후 연산해야 한다. 비교 연산자 ==, === A == B : A와 B가 같은 값인지 비교하여 불리언 값을 반환 A === B : A와 B가 참조(레퍼런스) 타입일 때 A와 B가 같은 인스턴스를 가리키는지 비교하연 불리언 값을 반환 스위프트의 유일한 참조타입인 클래스의 인스턴스에서만 참조 비교 연산자를 사용 가능하다. 스위프트의 기본 데이터 타입은 모두 구조체로 구현..

Swift - 04
Language/Swift 2022. 2. 1. 02:10

타입 별칭 사용자가 임의로 만든 데이터 타입이든 이미 존재하는 데이터 타입에 임의로 다른 이름을 부여할 수 있다. 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)") //..

Swift - 03
Language/Swift 2022. 1. 26. 02:56

데이터 타입 데이터의 종류 스위프트의 기본 데이터 타입이 모두 구조체를 기반으로 구현되어 있음 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() /..

Swift - 02
Language/Swift 2022. 1. 11. 19:57

print() 함수 디버깅 콘솔에 간략한 정보를 출력 출력하려는 인스턴스의 description 프로퍼티에 해당하는 내용을 출력 dump() 함수 자세한 정보를 출력 출력하려는 인스턴스의 자세한 내부 콘텐츠까지 출력 변수, 상수 타입 추론 : 변수를 생성할 때 데이터 타입을 생략하면 컴파일러가 변숫값의 타입을 추론하여 타입을 지정 var name = "bcd" print(type(of:name)) //String var height = 166.6 print(type(of:height)) //Double [출처 : Swift 프로그래밍 야곰]