iOS
-
동시성 프로그래밍(3) DispatchQueueiOS 2022. 2. 10. 23:57
안녕하세요. 오늘은 DispatchQueue에 대해서 알아보도록 하겠습니다. https://developer.apple.com/documentation/dispatch/dispatchqueue Apple Developer Documentation developer.apple.com 개발자 분들이라면 많이 보셨을 그래프라고 생각됩니다. 2000년도 초반까지 CPU는 단일 코어로 이루어져 있었습니다. 그러나 점점 하나의 코어의 성능을 올리는데에는 한계가 왔습니다. CPU의 발열을 잡을 수 없게 된 것이죠. 표를 보시면 2000년도 중반부터 단일 쓰레드의 성능과 주파수가 수렴하는 구간이 나타나는 것을 확인할 수 있습니다. 따라서 CPU 개발사들은 하나의 코어 성능을 올리는 것을 멈추고 코어의 개수를 늘리는 방..
-
동시성 프로그래밍(2) Serial(직렬) VS Concurrency(동시)iOS 2022. 2. 4. 14:37
안녕하세요. 오늘은 Serial(직렬)과 Concurrency(동시)에 대해서 알아보도록 하겠습니다. sync/aysnc와 Serial/Concurrency를 헷갈리시는 분들이 계신 걸로 알고 있는데요. 둘은 절대 다릅니다!! sync/async는 작업에 대한 특성이라면 Serial/Concurrency는 큐(대기행렬)에 대한 특성입니다. 하나씩 알아보도록 하겠습니다. 1. Serial(직렬) Serial은 순차적인이라는 뜻을 가지고 있습니다. 따라서 Serial Queue는 들어온 작업을 순차적으로 실행시키는 Queue입니다. 코드로 확인해보겠습니다. 우선 Serial Queue를 만들겠습니다. attributes 옵션을 주지 않으면 SerialQueue가 생성됩니다. let queue = Dispat..
-
동시성 프로그래밍(1) Sync(동기) VS Async(비동기)iOS 2022. 2. 3. 16:57
안녕하세요. 오늘은 동기(Sync)와 비동기(Async)에 대해서 알아보도록 하겠습니다. 1. Sync(동기) 사실이 동기라는 단어가 잘 안와닿는데요. 사전에 synchronous라는 단어를 검색하면 동시 발생하는이라는 뜻을 가지고 있는데요. 이렇게 보면 두 개의 작업이 동시에 발생하는 게 동기 같은 느낌이 듭니다. 하지만 저희가 작성했던 DispathcQueue.global().sync는 그렇지 않자나요? 프로그래밍에서는 한 작업에 대한 요청과 응답이 동시에 발생하는 것을 동기라고 말합니다. 동시라고 설명하니깐 작업시간이 긴 작업에 대해서는 조금 이해가 되지 않을 수도 있을 것 같아요. 요청을 보낸 작업에 대해서는 응답이 올 때까지 다른 작업을 요청하지 않는다! 라고 생각하시면 될 것 같습니다. 코드로..
-
setNeedsDisplay & setNeedsLayoutiOS 2021. 12. 23. 13:05
안녕하세요. 오늘은 비슷해보이는 두 친구들이죠. setNeedsDisplay와 setNeedsLayout에 대해서 알아보도록 하겠습니다. 두 메소드 이름만 봐서는 무엇인가를 세팅하는 거 같은데요. 먼제 setNeedDisplay부터 알아보도록 하겠습니다. setNeedsDisplay https://developer.apple.com/documentation/uikit/uiview/1622437-setneedsdisplay Apple Developer Documentation developer.apple.com setNeedsDisplay는 UIView의 메소드입니다. View의 전체 bounds를 다시 그려야 한다고 표시한다고 하네요. 다시 그리면 그렸지 표시한다는게 좀 낯섭니다. 이를 이해하기 위해서는..
-
Storyboard VS Code(Programmatically)iOS 2021. 12. 21. 19:37
안녕하세요. 오늘은 UI를 작성하는 대표적인 두 방법 스토리보드와 코드로 작성 두가지 방법을 비교해보도록 하겠습니다. Storyboard 장점 1. UI를 즉시 시각적으로 확인할 수 있다. 스토리보드로 UI를 작성한다면 가장 눈에 띄는 장점이 있죠? 앱을 실행시키지 않아도 바로바로 UI를 확인할 수 있습니다. 프로젝트에서 디자이너가 존재해서 디자인 가이드가 존재한다면 더할나위 없이 좋겠지만 그렇지 않을 수도 있습니다. 그럴 경우에는 작성한 UI를 즉시 확인할 수 있는 스토리보드가 강점을 보입니다. 2. ViewController의 코드 길이가 매우 짧아진다. View가 화면에 표시되기 위해서는 Frame이 필요합니다. 즉, (x, y, width, height) 값을 모두 알아야하는데 만약 오토레이아웃을..
-
Hugging & Compression ResistanceiOS 2021. 12. 21. 18:03
안녕하세요. 오늘은 AutoLayout 관련 프로퍼티인 Content Hugging Priority와 Content Compression Resistance Priority에 대해서 알아보도록 하겠습니다. 스토리보드에 View를 추가한 다음에 오토레이아웃을 설정하면 이런 프로퍼티들이 나타나는 것을 확인할 수 있습니다. 그 동안은 각각이 무엇을 의미하는지 정확히 알지 못해서 제약의 우선순위를 바꾸는 방법으로 문제를 해결하고는 했는데요. 오늘은 이 속성들이 무엇을 의미하는지 그 개념을 자세히 알아보도록 하겠습니다. intrinsicContentSize Hugging Priorty와 Compression Resistance Priority를 이해하기 위해서는 우선 intrinsicContentSize를 알아야..
-
ARC(Automatic Reference Counting)iOS 2021. 12. 20. 20:18
안녕하세요. 오늘은 ARC에 대해서 알아보도록 하겠습니다. 저는 그동안 자동으로 메모리를 관리해주는 방식으로만 알고 있었는데요. 이건 ARC를 알고 있다고 말할 수 없자나요? 그래서 오늘은 과연 ARC가 무엇인지 좀 더 자세히 알아보도록 하겠습니다. ARC 공식문서 Automatic Reference Counting — The Swift Programming Language (Swift 5.5) Automatic Reference Counting Swift uses Automatic Reference Counting (ARC) to track and manage your app’s memory usage. In most cases, this means that memory management “just ..
-
ViewController Life CycleiOS 2021. 12. 16. 22:02
안녕하세요. 오늘은 ViewController Life Cycle. 즉, View Controller 생명 주기를 알아보도록 하겠습니다. 보통 생명주기는 어떠한 시스템이 생겨나고 사라질 때까지의 흐름을 의미합니다. ViewController 또한 생명주기가 존재합니다 ViewController의 생명 주기 Method들은 아래와 같습니다. . loadView() . loadViewIfNeeded() . viewDidLoad() . viewWillAppear(_ animated: Bool) . viewWillLayoutSubviews() . viewDidLayoutSubviews() . viewDidAppear(_ animated: Bool) . viewWillDisappear(_ animated: Boo..