전체 글 30

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

Swift ;; Stack 구현!

Swift에는 Stack 내장함수가 존재하지 않기 때문에 직접 Stack를 구현해서 사용해야 한다. swift 알고리즘 문제 DFS 등을 풀 때 필요한 경우가 있다. 하지만! swift 메서드 중 popLast()와 같은 메서드를 보면, 굳이 Stack을 구현하지 않고 배열을 스택처럼 사용해도 무방하다. 스택은, 프링글스 과자통의 과자를 꺼내먹을 때와 같이 나중에 들어간 원소가 먼저 나오게 된다. 이를 후입선출(LIFO, Last In First Out) 구조라고 한다. 스택의 연산은 삽입(push), 삭제(pop), 원소 보기(peek), count(스택에 들어있는 원소의 개수), isEmpty(스택이 비었는지 여부)로 이루어져 있다. Stack 구현 코드 struct Stack { private va..

iOS/Swift 2023.02.09