목록전체 글 (64)
GGURUPiOS

GCD (Grand central Dispatch) GCD는 동시성 환경에서 작업을 실행하기 위한 API를 제공함 시스템 수준에서 스레드 및 대기열 관리를 처리함 비동기 실행되는 작업을 쉽게 처리할 수 있고 작업 간의 의존성이나 순서를 지정할 수 있음 DispatchQueue는 GCD를 사용하기 위한 대기열로, 대기열에 작업을 추가해서 작업을 처리하도록 도와줄 것임 (First In, FirstOut) DispatchQueue에 작업을 넘길 때는 2가지를 정해주어야 함 단일, 다중 스레드 여부 ( Serial / Concurrent ) 동기, 비동기 여부 ( sync / async ) DispatchQueue가 GCD와 같은 개념은 아니고, GCD가 더 넓은 개념임 GCD는 Dispatch라는 프레임워크..
동시성 프로그래밍 (Concurrency Programming) 동시성 프로그래밍이란 멀티 스레드 환경에서 여러 작업을 동시에 처리하는 기술임 스위프트에서는 GCD, Operation, async/await 등을 활용해서 동시성 프로그래밍을 작성할 수 있음 그 전에 용어 정리 먼저 해볼게요 코어 (Core) 코어는 CPU에서 실제로 일을 처리하는 녀석 CPU의 코어는 한 번에 한 가지 일만 처리할 수 있음 하지만 싱글 코어를 가진 컴퓨터라도 여러 작업을 동시에 처리할 수 있음 → 여러 작업을 동시에 (문서작업, 음악 듣기 등) 하는 것 처럼 보이지만 사실은 일을 짧은 단위로 나누어서 번갈아 작업하는 것임 ( 속도가 빠를 뿐 ) 위 처럼 여러가지 작업을 시분할로 나누어 번갈아 가며 처리하는 것을 동시성 프..

Closure 함수를 만들지 않고 함께 실행되는 그룹코드 클로저는 정의된 문맥에서 모든 상수 및 변수에 대한 참조를 캡쳐하고 저장 가능. Swift는 이 캡쳐와 관련한 모든 메모리를 알아서 처리함 클로저는 다음 세 가지 형태 중 하나를 갖는다 전역 함수 : 이름이 있고 어떤 값도 캡쳐하지 않는 클로저 (함수도 클로저의 종류라는 말임) 중첩 함수 : 이름이 있고 관련한 함수로 부터 값을 캡쳐 할 수 있는 클로저 클로저 표현 : 경량화 된 문법으로 쓰여지고 관련된 문맥(context)으로부터 값을 캡쳐할 수 있는 이름이 없는 클로저 Swift에서 클로저 표현은 최적화 되어서 간결하고 명확함. 최적화 내용 문맥(context)에서 인자 타입(parameter type)과 반환 타입(return type)의 추..

Functions ( 함수 ) 함수는 특정 작업을 수행하는 독립적인 코드 덩어리임. 다양한 함수 유형이 있음 함수 정의 및 호출 함수를 정의할 때 func 키워드와 함수명 파라미터 형, 반환 형을 정의 함 func greet(person: String) -> String { let greeting = "Hello, " + person + "!" return greeting } // 더 짧게 만들기 func greetAgain(person: String) -> String { return "Hello again, " + person + "!" } 함수 파라미터(매개변수)와 반환 값 스위프트에서 파라미터와 반환값은 매우 유연함. 여러 유형이 있음 파라미터가 없는 함수 func sayHello() -> Str..

Control Flow 스위프트에는 다양한 제어문이 있음 while, for - in loop, if , guard , switch 등 For-In 문 for-loop 를 사용해서 배열, 숫자나 문자열의 범위만큼 반복 함 전 포스팅에서 언급했듯이 딕셔너리의 경우 튜플로 방출 만약 for 문에서 값이 필요하지 않을 경우 _를 사용해 무시 가능 색깔이 안나와 for index in 1...5 { print("\(index) times 5 is \(index * 5)") } let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4] for (animalName, legCount) in numberOfLegs { print("\(animalName)s have \(legCou..

컬렉션 유형 ( Array, Set, Dictionary ) 스위프트는 Array, Set, Dictionary 세가지 컬렉션 유형을 제공함 위 컬렉션 유형들은 저장할 수 있는 값 및 키 유형에 대해 항상 명확함 컬렉션의 가변성 변수에 할당하면 변경이 가능함. 상수에 할당하면 변경 불가, 크기 내용 모두 변경 불가. 컬렉션 성능을 위해 변경이 필요없으면 상수로 선언하자. Array ( 배열 ) 동일한 유형의 값을 저장함 배열유형 축약형 문법 배열 타입은 Array로 적을수 있고, [Element]형태로 사용 가능 빈 배열 생성 var someInts: [Int] = [] // 이니셜라이저 구문을 사용하여 만들 수 있음 기본값으로 배열 생성 var threeDoubles = Array(repeating: ..