iOS 22

UIKit ;; Core Data (1) 정의와 Core Data Stack

Core Data란? 앱 내부에서 모델 계층을 관리하는 데 사용되는 프레임워크이다. 객체를 저장소에 매핑하는 세부 정보를 추상화하여, 데이터베이스를 직접 관리하지 않고도 데이터를 쉽게 저장할 수 있도록 한다. Persistence를 포함하는 객체 생명 주기와 객체 그래프 관리와 관련된 작업에 대한 일반화되고 자동화된 솔루션을 제공한다. Core Data는 일반적으로 모델 계층을 지원하기 위해 작성하는 코드의 양을 50-70% 줄인다. 즉, Core Data는 DB 관리를 위해 Apple이 제공하는 프레임워크이다. (Core Data != DB) 사용자는 Core Data를 이용하여 쉽게 앱 내부에 영구적인 데이터를 저장하고 관리할 수 있다! Core Data Stack : Swift Core Data를 ..

iOS/UIKit 2023.04.07

Swift ;; GCD #4 Serial과 Concurrent

앞선 포스팅에서 sync와 async에 대해서 공부해봤다. serial과 concurrent, sync와 async를 공부하기 전에 async와 concurrent가 엄청나게! 헷갈렸다. 지금은 전혀 다른 개념이라는 것을 알고 있다. Serial과 Concurrent는 뭘까? DispatchQueue가 가진 특성이다. 먼저 요약하자면, SerialQueue는 작업을 하나의 스레드에서 처리하고, ConcurrentQueue는 작업을 여러 스레드를 사용하여 처리한다. 사용자는 작업의 특성에 맞게 SerialQueue로 보낼 작업은 SerialQueue로, ConcurrentQueue로 보낼 작업은 ConcurrentQueue로 보내면 되는 것이다. 스레드로의 분배는 큐가 알아서 해준다. Serial (직렬)..

iOS/Swift 2023.03.16

Swift 문법 ;; stride(from:through:by:) / stride(from:to:by:)

오늘 백준 알고리즘 문제 2775: 부녀회장이 될테야 를 풀다가 stride에 대해서 알게 되었다. https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다. 1 ≤ 층, 호 ≤ 14 라는 조건이 있어서 0층에 초기값을 var apt = Array(repeating: Array(repeating: 0, count: 14), count: 15) apt[0] = [1,2,3,4,5,6,7,8,9,10,11,12,13,..

iOS/Swift 2023.03.16

Swift ;; GCD #3 Sync 사용 시 주의할 점

앞서 특정 스레드에서 async로 작업을 보내면 해당 스레드는 기다리지 않고 다음 작업을 진행할 수 있는 것이고, sync로 작업을 보내면 해당 스레드는 그 작업이 완료될 때까지 기다려(블락되어) 다음 작업을 진행할 수 없는 것이라고 했다. https://may1coding.tistory.com/56 Swift ;; GCD #2 Async와 Sync 앞서 GCD는 DispatchQueue를 사용하여 작업을 분산한다고 했다. https://may1coding.tistory.com/55 Swift ;; GCD(Grand Central Dispatch) #1 정의 GCD는 동시성 프로그래밍을 위해 Apple이 제공하는 API이다. (iOS 8부터 지원) may1coding.tistory.com 이번에는 syn..

iOS/Swift 2023.03.15

Swift ;; GCD #2 Async와 Sync

앞서 GCD는 DispatchQueue를 사용하여 작업을 분산한다고 했다. https://may1coding.tistory.com/55 Swift ;; GCD(Grand Central Dispatch) #1 정의 GCD는 동시성 프로그래밍을 위해 Apple이 제공하는 API이다. (iOS 8부터 지원) GCD는 DispatchQueue를 이용하여 작업을 분산처리한다. 개발자가 스레드를 생성하는 작업 없이 DispatchQueue라고 이름 붙여진 Qu may1coding.tistory.com 우리(개발자)가 작업을 분산 처리하고 싶을 때, DispatchQueue로 작업을 보내기만 하면, 큐가 알아서 특성에 따라 스레드로 분산 처리를 해준다. 최소한 개발자가 지정해줘야할 것은 1. 작업(task)을 asy..

iOS/Swift 2023.03.14

Swift ;; GCD(Grand Central Dispatch) #1 정의

GCD는 동시성 프로그래밍을 위해 Apple이 제공하는 API이다. (iOS 8부터 지원) GCD는 DispatchQueue를 이용하여 작업을 분산처리한다. 개발자가 스레드를 생성하는 작업 없이 DispatchQueue라고 이름 붙여진 Queue에 작업을 보내기만 하면 DispatchQueue가 알아서 여러 스레드로 작업을 분산시킨다. DispatchQueue를 번역해보면 dispatch가 보내다, 발송하다의 의미를 가지고 있으므로 큐로 보내다 라는 의미이다. 매우 직관적! 그림으로 보기!! 개발자는 스레드를 신경쓸 필요 없이 DispatchQueue에 Task를 보내기만 하면, DispatchQueue가 알아서 (특성에 맞게) 작업을 여러 스레드로 분산한다. 동시성 프로그래밍? 예를 들어 네이버 (ht..

iOS/Swift 2023.03.13

UIKit ;; hugging priority, compression resistance priority (+Intrinsic Size)

Hugging Priority와 Compression Resistance Priority StackView의 Distribution.fill 의 설명에서 내부 컨텐츠들을 스택뷰에 채우는데, Hugging Priority와 Compression Resistance Priority에 기반한다고 했다. 따라서 Hugging Priority와 Compression Resistance Priority에 대해서 공부를 해보려고 한다. Compression Resistance Priority : the priority with which a view resists being made smaller than its intrinsic size. (해당 뷰의 고유 크기보다 작아지지 않도록 하는 우선순위) https://d..

iOS/UIKit 2023.03.10

UIKit ;; UIStackView.Distribution

스토리보드로 StackView를 배치하던 도중 Axis, Alignment, Distribution, Spacing 등을 발견했다. Axis는 Horizontal, Vertical이 있는 걸 봐서 스택뷰 내부의 컨텐츠를 수평으로 배치할 것인지, 수직으로 배치할 것인지 직관적으로 알 수 있었다. Alignment도 하나하나 눌러보니 감 잡음. 근데 Distribution은 번역하면 분배, 분포 등의 의미를 가졌는데 뭐지?? https://developer.apple.com/documentation/uikit/uistackview/distribution UIStackView.Distribution | Apple Developer Documentation The layout that defines the si..

iOS/UIKit 2023.03.10