Swift information
우아한 Model Data 처리 (1)
Struct와 Codable 프로토콜을 통해 주로 Server Response Data를 받습니다. 하지만, API 수정 및 신규 배포 등 의 문제로 인해 예상치 못한 String Key 값이 오거나, 자료형이 다른 Response Data가 올 수 있습니다. 보통, 이런 Decoding Error가 발생하게 되면 해당 데이터 전체를 쓸수가 없게됩니다. 즉 10개의 프로퍼티가 있는 Model 에서 유저가 몰라도 되는 프로퍼티의 자료형이 다르게 온다면, 해당 데이터 전체에 대한 Decoding Error가 발생하게 됩니다. 그렇다면, 좀 더 유연해질 순 없을까요? 물론, 쉽고 편하게 가능합니다 ! 나아가, String Key 값을 보통 enum으로 처리하게 되는데요. (String으로 값을 받은 후, en..
클로저 - 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
간단한 요약 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..
ARC 시리즈 1 - Retatin Cycle 과 Reference Count
Swift의 정말 정말 중요한 메모리 관리 기법입니다. Automatic Reference Counting 자동으로 레퍼런스 카운팅을 관리하며, 이를 명확히 이해해서 ARC를 고려한 메모리 설계가 iOS 프로젝트를 진행하며 필수입니다. (ARC를 고려하여, 메모리 누수 방지를 위해 노력한점 또한 추후 포스팅 예정 빠밤.) 공식문서 ARC 핵심 요약 Swift는 ARC(Automatic Reference Counting)를 사용하여 앱의 메모리 사용량을 추적하고 관리 클래스의 새 인스턴스를 생성할 때마다 ARC는 해당 인스턴스에 대한 정보를 저장하기 위해 메모리 청크를 할당합니다. 이 메모리는 해당 인스턴스와 관련된 저장된 속성 값과 함께 인스턴스 유형에 대한 정보를 보유 Class 마다 참조에 관한 Co..