Search
🕹️

비동기 프로그래밍/ 제네릭

비동기 프로그래밍/제네릭

개념 바로 알기

1. 비동기 프로그래밍

1.
비동기 프로그래밍:
작업을 동시에 실행하거나, 완료 여부를 기다리지 않고 다음 작업을 수행할 수 있는 프로그래밍 방식.
iOS에서는 주로 **GCD(Grand Central Dispatch)**와 비동기 메서드를 사용.
2.
동기 vs 비동기
동기(Synchronous): 작업이 완료될 때까지 대기.
비동기(Asynchronous): 작업 완료를 기다리지 않고 바로 다음 작업 실행.
3.
GCD의 주요 큐:
Main Queue: UI 작업을 처리.
Global Queue: 백그라운드 작업 처리.
Custom Queue: 사용자 정의 작업 큐.

비동기 프로그래밍 예제

DispatchQueue.global().async { print("비동기 작업 실행") DispatchQueue.main.async { print("UI 업데이트") } }
Swift
복사

2. 제네릭(Generic)

1.
제네릭:
코드의 유연성과 재사용성을 높이기 위해, 타입에 의존하지 않는 코드를 작성하는 방법.
같은 로직을 다양한 타입에서 사용할 수 있도록 함.
2.
제네릭 함수
하나의 함수로 여러 타입을 처리.
func swapValues<T>(_ a: inout T, _ b: inout T) { let temp = a a = b b = temp }
Swift
복사
3.
제네릭 타입
구조체, 클래스, 열거형에서 제네릭을 활용 가능.
struct Stack<T> { private var elements: [T] = [] mutating func push(_ element: T) { elements.append(element) } mutating func pop() -> T? { return elements.popLast() } }
Swift
복사

직접 구현해보기

앞서 복습한비동기 프로그래밍은 iOS에서 UI 작업과 백그라운드 작업을 효율적으로 처리하는 데 필수적입니다.
제네릭(Generic)은 타입에 의존하지 않고 재사용 가능한 코드를 작성할 수 있어 유연성과 효율성을 제공합니다.
이 두 개념은 iOS 개발의 핵심이니 직접 구현하며 익혀보세요!

Step 1: 비동기 프로그래밍 구현

1.
비동기 데이터 처리:
DispatchQueue.global()을 사용하여 백그라운드에서 숫자를 1부터 5까지 출력한 후, Main Queue에서 "UI 업데이트 완료"를 출력하세요.
힌트:
DispatchQueue.global().async { for i in 1...5 { print(i) } DispatchQueue.main.async { print("UI 업데이트 완료") } }
Swift
복사
2.
네트워크 시뮬레이션:
DispatchQueue를 사용해 다음을 구현하세요:
3초간 데이터를 로드하는 작업을 비동기로 수행.
작업 완료 후, "데이터 로드 완료" 메시지를 메인 큐에서 출력.

Step 2: 제네릭 구현

1.
제네릭 함수 작성:
두 값을 교환하는 제네릭 함수 swapValues<T>를 작성하세요.
예제 입력:
var a = 10 var b = 20 swapValues(&a, &b) print(a, b) // 출력: 20, 10
Swift
복사
2.
제네릭 스택 구현:
Stack<T> 구조체를 작성하고 다음 기능을 구현하세요:
push(_:): 스택에 요소 추가.
pop(): 스택에서 요소 제거.
스택의 현재 상태를 출력하는 메서드.
예제 입력:
var intStack = Stack<Int>() intStack.push(1) intStack.push(2) print(intStack.pop()) // 출력: 2
Swift
복사

제출하기