Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

iOS Developer38

2. async/await/MainActor/Task async/await/MainActor/Task async와 await는 Swift에서 비동기 처리를 위한 키워드이다. async는 비동기 작업을 수행하는 함수나 메서드를 선언할 때 사용되고, await는 비동기 작업의 완료를 기다리고, 결과를 반환받을 때 사용된다. *아래 설명은 함수/메서드 구분하지 않음. 함수로 통일함 async 키워드는 비동기적으로 실행되는 코드 블럭을 표시한다. 비동기 함수는 작업을 시작하고 중간에 일시 중지되거나, 다른 작업을 수행하는 동안 '제어를 반환할 수 있다.' -> 스레드가 차단되지 않고 동시에 여러 작업을 수행할 수 있다. async 함수 내부에서 await 키워드를 만나면 비동기 작업이 완료될 때까지 비동기 함수의 실행이 일시 중단된다. 조금 더 정확히 말하면 aw.. 2023. 7. 10.
1. 비동기 처리 방법/ Completion/ Combine / async/await Completion/ Combine / async/await Swift에서 비동기 처리 방법은 다양하다. 하지만 각각의 방식들이 등장한 순서가 있어서 점차 발전/개선되는 느낌이 있다. 일반적으로 프로그램은 작업을 순차적으로 실행하는 동기적인 방식으로 동작한다. 앞에 일이 끝나야 다음 일을 한다는 것! 하지만 비동기 처리는 작업을 병렬적으로 실행하고, 작업의 완료를 기다리지 않고 다음 작업을 실행하는 것을 말한다. 작업들 중 일부가 동시에 실행되는 것을 의미! 이전 작업의 완료를 기다리지 않고! 여기서는 컴플리션 핸들러, 컴바인 그리고 async,await에 대해 알아보려 한다. 1. 컴플리션 핸들러 (Completion Handler) 컴플리션 핸들러는 이름 그대로 비동기 작업이 완료된 후 (comple.. 2023. 7. 10.
0. Do - Catch / Try / Throw 에러처리 Do - Catch / Try / Throw 에러처리 네트워킹, 비동기 처리를 하다보면 매우 자주 보이는 do - catch, try, throw에 대해 알아보자. 변천사를 알아보는 느낌으로.. 데이터를 다운받는 데이터 매니저, 그리고 뷰모델, 간단한 데이터를 보여주는 뷰가 있다고 치자. 데이터 매니저에서 데이터를 다운받는 함수가 만약 실패 가능성이 있다면 어떻게 처리할 수 있을까? 먼저 옵셔널로 처리한다면 import SwiftUI final class DoCatchTryThrowDataManager { let isActive: Bool = false func getTitle() -> String? { if isActive { return "New Text" } else { return nil } } .. 2023. 7. 5.
0.Firebase 초기 설정 / App Delegate 🔥Firebase 초기 설정 / App Delegate🔥 Firebase? Firebase는 Google이 제공하는 개발 플랫폼으로, 모바일 앱 및 웹 애플리케이션을 빠르고 쉽게 개발하고 배포하기 위한 다양한 기능과 도구를 제공한다. Firebase는 클라우드 기반의 백엔드 서비스와 개발 도구, SDK(소프트웨어 개발 키트)를 제공하여 앱 개발자가 사용하기 쉬운 방식으로 서버 관리, 데이터베이스, 사용자 인증, 스토리지, 푸시 알림, 실시간 데이터베이스, 애드몹 광고 등 다양한 기능을 제공한다. Firebase의 주요 기능 실시간 데이터베이스 (Realtime Database) 실시간으로 동기화되는 JSON 데이터베이스를 제공하여 앱의 데이터를 저장하고 동기화할 수 있다. 인증 (Authenticatio.. 2023. 7. 2.
Swift - Unit Test/ 유닛테스트 요즘 여기저기서 많이 들리는 TDD를 위해서 필요한 Unit Test에 대해 알아보자. TDD란? Test-Driven Development. 소프트웨어 개발 방법론 중 하나. 테스트 코드를 먼저 작성하고 그에 맞게 실제 코드를 구현하는 방식. TDD는 아래와 같은 순서로 진행된다. 1. 실패하는 테스트 코드 작성(요구사항 충족하지 않는 테스트 케이스 작성) 2. 테스트를 통과하는 최소한의 코드 작성 3. 테스트 통과 확인 4. 리팩토링(작성한 코드 개선, 중복 제거 및 품질 향상) 위 과정을 반복하면서 요구사항을 충족하는 코드를 점점 디벨롭하는 것. Unit Test는 이런 개발 사이클에서 핵심적인 역할을 담당한다. Unit Test Unit Test는 작은 단위의 코드, 즉 함수나 모듈 등의 개별적인.. 2023. 7. 1.
의존성 주입 (DI, Dependency Injection) 한참 전에 의존성 주입에 대해 공부하며 포스팅을 했었는데.. 오늘 다시 공부하면서 훨씬 많이 이해한 거 같아서 다시 정리하기 위함. 의존성 주입. DI라고 하는데.. 말이 참 어렵다. 의존성? (Dependency) 난 카페인에 너무 의존적이야. 할 때 그 의존이다. 카페인에 의존적인 사람은 카페인이 없으면 살지 못하겠지?(비유다.) 코드로 본다면 class 커피 { var bestMenu: String = "아아" } class 카페인중독자 { var myCoffee: 커피 = 커피() func say() { print(myCoffee.bestMenu) } } 여기서 카페인중독자 클래스는 커피 클래스에 의존하고 있다. why? 커피 클래스가 없다면 var 커피를 초기화 할 수 없으니까! 이런식으로 코드.. 2023. 6. 18.