SWIFT

    우아한 Model Data 처리 (1)

    우아한 Model Data 처리 (1)

    Struct와 Codable 프로토콜을 통해 주로 Server Response Data를 받습니다. 하지만, API 수정 및 신규 배포 등 의 문제로 인해 예상치 못한 String Key 값이 오거나, 자료형이 다른 Response Data가 올 수 있습니다. 보통, 이런 Decoding Error가 발생하게 되면 해당 데이터 전체를 쓸수가 없게됩니다. 즉 10개의 프로퍼티가 있는 Model 에서 유저가 몰라도 되는 프로퍼티의 자료형이 다르게 온다면, 해당 데이터 전체에 대한 Decoding Error가 발생하게 됩니다. 그렇다면, 좀 더 유연해질 순 없을까요? 물론, 쉽고 편하게 가능합니다 ! 나아가, String Key 값을 보통 enum으로 처리하게 되는데요. (String으로 값을 받은 후, en..

    간단하게 알아보는 GCD vs Swift Concurrency 차이

    간단하게 알아보는 GCD vs Swift Concurrency 차이

    동시성 문제 및 쓰레드 관리에서 어떠한 차이가 있는지 중점으로 알아보겠습니다. 먼저, Swift Concurrency가 어떻게 쓰이는지 간단하게 알아보겠습니다. func getlistPhotosURLS(inGallery name: String) async -> [String] { let result = // ... some asynchronous networking code ... return result } let photo = await getlistPhotosURLS(inGallery name: String) show(photo) 기존의 Completion Handler(escaping closure 이용한)를 이용해 비동기 코드를 다뤘던 부분을, async로 대체하고 해당 함수의 결과 값을 받는 ..

    클로저 - Capturing Values와 ARC

    클로저 - Capturing Values와 ARC

    공식 Swift문서의 Closures Closures are self-contained blocks of functionality that can be passed around and used in your code 클로저는 자체 포함된 함수 블록으로, 전달이 가능하고 코드안에서 사용되어진다. Swift의 클로저에 대한 기본적인 개념을 알고 있다고 하고 시작하겠습니다. 전역 함수, 중첩 함수, 익명 함수 모두를 Swift에선 클로저라고 부릅니다. ARC와 관련된 값 캡쳐링은 중첩 함수와 익명함수에 유의해서 살펴보면 됩니다. 공식문서 설명: 전역 함수는 이름이 있고 값을 캡처하지 않는 클로저입니다. 중첩된 함수는 이름이 있고 둘러싸는 함수에서 값을 캡처할 수 있는 클로저입니다. 클로저 표현식은 주변 컨텍스..

    ARC 시리즈 2 - SideTable

    ARC 시리즈 2 - SideTable

    간단한 요약 SideTable은 Swift 4 이후로 weak 참조일 때 weak reference count에 상관없이 strong reference count가 0 이면 바로 deinit과 메모리 deallocated가 진행되게하는 성능향상을 위한 것! 먼저 weak 와 unowned 사용의 가장 큰 차이는 공식문서를 참고하자면, unowned는 참조하는 다른 인스턴스의 수명이 같거나 더 길 때 사용한다는 점입니다. Swift 4 이후로는 더욱 차별점이 생겼습니다. 바로 weak 참조는 SideTable을 참조하여 strong reference count가 0이 되면 weak reference count에 상관없이 object deinit , memory deallocated 가 발생하게 됩니다. u..