Deep Dive iOS

    간단하게 알아보는 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로 대체하고 해당 함수의 결과 값을 받는 ..

    Thread Safe한 Core Data 환경 구성하기

    Thread Safe한 Core Data 환경 구성하기

    CoreData는 Apple에서 기본으로 제공하는 객체지향 데이터베이스인 프레임워크 입니다. NSManagedObjectContext를 통해 CURD를 진행하며, Persistent Store Coordinator에 접근하고 Managed Object Instance를 생성하여 반환하여 데이터를 관리합니다. 기본적으로, 앱 내에 메모리를 저장할 수 있어서 최근 검색기록 및 내부데이터 등을 저장하기 위해 자주 사용됩니다. 간단한 데이터 저장이 필요한 경우라면 Side Effect가 크지 않을 수 있지만, 앱내에 저장해야할 데이터가 이미지이거나 한번에 많이 저장이 이루어진다면 멀티쓰레딩을 통해 CoreData 작업을 진행해야합니다. 하지만, 기본적으로 CoreData는 Thread Safe하지 않습니다. c..

    iOS 계층구조? 4단계로 나누어 생각해보기 (iOS Structure)

    iOS 계층구조? 4단계로 나누어 생각해보기 (iOS Structure)

    iOS 계층구조에 대해서 공부해봅시다. (네트워크 OSI 7계층 공부하다가 쓰는글) Core OS 방향으로 갈수록 Hardware(iPhone)과 가까워지며, Cocoa Touch 계층으로 갈수록 앱과 가까워지는 계층구조입니다. Cocoa Touch에서 Touch를 빼면 MAC OS에 구동되는 Cocoa FrameWork가 됩니다. Cocoa가 붙는 단어는 Objective C를 기반으로한 NSObject를 상속받는 모든 클래스와 객체를 가리킬 때 사용되는 단어입니다 !_! 이러한 계층구조에 대한 이해가 필요한 이유? - 우리가 흔히 사용하는 UIKit은 Core Services 계층에 있는 Foundation kit을 포함하고 있습니다. 따라서 자연스럽게 계층의 포함관계를 알고 이러한 Kit들이나 Co..

    UIView? Custom View?

    UIView를 공부하고 나만의 Custom View만드는 법을 생각해봅시다. View는 앱 UI의 기본 구성 요소이며, UIView 클래스는 모든 뷰에 공통적인 동작을 정의합니다. 뷰 개체는 정해진 범위의 사각형 내에서 컨텐츠를 렌더링하고 해당 컨텐츠와의 모든 상호 작용을 처리합니다. 더 정교한 컨텐츠를 위해 하위 클래스(SubClass)를 만들 수 있습니다. view objects는 유저와 어플리케이션이 상호작용하는 주요 방법이므로, 다음과 같은 특징과 책임이 있습니다. Drawing 및 애니메이션 View는 UIKit 또는 Core Graphics를 사용하여 직사각형 영역에 콘텐츠를 그립니다. 일부 view의 프로퍼티는 새 값으로 애니메이션 할 수 있습니다. 레이아웃 및 하위view 관리 View는 ..