[Swift] Swift Concurrency(1) - 동시성오늘은 Swift Concurrency에 대해 본격적으로 알아보기 전,동시성 문제가 왜 발생하고 어떤 문제가 발생하는지 먼저 파악해보고자 한다! (제가 공부하기 위해 작성한 것이므로 틀린 정보가 있다면 알yanni13.tistory.com 이전 포스팅에서는 Swift Concurrency의 기본 개념이 되는 동시성에 대해서 다뤄보았다. 오늘은 Swift Concurrency가 어떤 문제를 해결하고자 했는지에 대해서 조금 더 깊게 다뤄보고자 한다.그 근간이 되는 GCD도 같이 살펴보고 , Swift Concurrency의 종류와 GCD는 어떤 차이점을 가지고 있는지 다뤄보고자 한다.(제가 공부하기 위해 작성한 것이므로 틀린 정보가 있다면 알려주세..
오늘은 Swift Concurrency에 대해 본격적으로 알아보기 전,동시성 문제가 왜 발생하고 어떤 문제가 발생하는지 먼저 파악해보고자 한다! (제가 공부하기 위해 작성한 것이므로 틀린 정보가 있다면 알려주세요!) ✏️ 동시성이란?여러 작업을 논리적으로 동시에 실행하는 것처럼 보이게 하는 것 동시성이란 실제로 짧은 시간 간격으로 작업 간 전환하며 실행되어 여러 작업을 논리적으로 동시에 실행하는 것처럼 보이게 만드는 것이다. 병렬성은 물리적으로 동시에 여러 작업을 수행하는 건데 동시성은 컨텍스트 스위칭을 통해서 처리되기 때문에 하나의 물리적 스레드에서도 여러 스레드가 작업하고 있는 것처럼 보인다. iOS에서는 동시성을 크게 GCD의 DispatchQueue와 Swift Concurrency의 asyn..
✏️ WidgetKitWidgetKit은 사용자가 홈 화면 및 잠금화면에서 손쉽게 정보를 확인할 수 있는 위젯을 구현할 때 주로 사용되는 프레임워크이다.WidgetKit은 기본적으로 iOS, iPadOS, macOS 멀티 플랫폼 지원을 위해 SwiftUI로 구성되어 있다. 들어가기 앞서 위젯이 언제 처음 나오게 되었는지 한번 살펴보자!위젯의 역사는 아래 표를 통해 확인할 수 있다. iOS14부터 widgetkit을 사용할 수 있었고 점차 live activity와 같은 기능들이 추가된 것을 확인할 수 있다. WWDC 2020에 따르면 위젯의 정의는 크게 4가지의 요소로 구분된다고 한다.Kind : 위젯이 가지는 식별자이며 하나의 extension이 여러 kind를 지원할 수 있다.Configurati..
✏️ Coordinator 패턴Coordinator 패턴은 ViewController에서 수행하던 화면 전환에 대한 로직을 Coordinator를 통해 분리한다는 컨셉을 가지고 있다. 나는 개발하다가 ViewController에서 navigate를 할 때 이때껏 큰 불편함을 느끼지 못했었는데, 프로젝트 규모가 6개월을 넘어갈 정도로 커지게 되면서 화면 전환 로직을 더 이상 ViewController가 가지고 있는 게 맞는지, 화면이동 간의 중복코드가 너무 많아지는 문제점들이 있어서 Coordinator 패턴에 대한 관심을 가지게 되었다. navigation 하는 코드 그거 얼마나 된다고 추가적인 학습 비용을 감수하더라도 coordaintor 패턴을 써야 하는지 의문이 들 수 있다. (나 조차 그랬으니..
오늘은 RxSwift를 사용할 때 사용되는 프로퍼티들에 대해서 알아보고자 한다! (제가 공부하기 위해 작성한 것이므로 여러 개념들이 나올 수 있으며 틀린 정보가 있다면 알려주세요!) RxSwift의 기본 컨셉이 되는 Observable, Observer, Dispose에 대한 이야기는 이전에 작성해둔 블로그도 있기 때문에 오늘은 프로퍼티에 대해서 더 자세히 알아보고자 한다. 1️⃣ SubscribeRxSwift는 기본적으로 이벤트를 전달하는 Observable과 이벤트를 처리하는 Observer로 구성되어 있다.(Observable과 Observer에 대한건 이전 포스팅에도 있기 때문에 이번 포스팅에서는 짧게 다루고 넘어가게보겠다!) Observable은 이벤트를 전달하는 입장이고 Observer는 ..
오늘은 테이블뷰를 공부하던 중 imageView가 동그랗게 잘리지 않는 문제의 원인을 파악해 보기 위해View Drawing Cycle에 대해서 공부해보려고 한다. (제가 공부하기 위해 작성한 것이므로 여러 개념들이 나올 수 있으며 틀린 내용이 있다면 알려주세요!)🤔 문제원인self.profileImageView.layer.cornerRadius = self.profileImageView.frame.width / 2 분명 이미지 뷰의 넓이만큼 2로 나눠서 원의 형태로 이미지 뷰가 만들어지게 구현을 했지만 막상 빌드해 보면 아래 사진처럼 뭔가 마름모 모양의 형태로 구현이 되었다. 근데 스크롤을 하다보면 또 정상적으로 원의 형태가 나오게 되어 실행 시점에 문제가 있는거 같아 DispatchQueue.ma..
TableView에서 커스텀 셀을 다룰 때 awakeFromNib, init, prepareForReuse의 역할이 비슷해서 언제 써야 하는지 헷갈릴 때가 많았다. 따라서 오늘은 해당 개념들을 다시 정리하고 왜 이런 구조가 필요한지 분석해보고자 한다. (제가 공부하기 위해 작성한 것이므로 여러 개념들이 나올 수 있으며 틀린 내용이 있다면 알려주세요!) ✏️ 재사용 메커니즘TableView에서 1000개의 데이터를 보여주는 리스트가 있다고 가정했을 때 이 1000개의 셀이 모두 메모리에 생성되는 방식일까? 디자인에 따라 다르겠지만 아이폰 설정 창의 셀 크기를 참고해보면 화면에 보이는 셀은 10개 정도의 셀인데, 나머지 셀을 미리 만들어두는 건 메모리 낭비를 발생한다. 심지어 몇만개의 셀이 존재할 수..
라이브러리를 배포하기 위해 기존 앱 프로젝트의 코드를 Swift Package로 옮긴 뒤 빌드했을 때 컴파일 에러가 발생하였다. 컴파일러가 두 가지 제안을 줬는데 MainActor를 호출하던가 nonisolated 키워드를 사용하라고 제시했다. 하지만 AVFoundation과 같이 카메라나 미디어 처리는 주로 백그라운드에서 작업되는 것이라고 알고 있는데 MainActor를 호출하는 게 맞는 건가? 싶다가 nonisolated를 사용해보고자 하였다. 따라서 오늘은 swift Concurrency의 일부인 nonisolated 키워드에 대해서 알아보겠다!nonisolated와 nonisolated(unsafe)는 어떤 점이 다른지, 어떤 원리로 실행되는지 궁금해서 공부해보고자 한다.(제가 공부하기 위해 ..
- Total
- Today
- Yesterday
- SWIFT
- combine
- GCD
- Xcode
- XCTest
- AppGroup
- swiftUI
- group tasks
- internal Combine
- 백준
- Swift Concurrency
- Task
- 클로저
- UITest
- asyne-let
- closure
- 코딩테스트
- SnapshotTest
- ObservableObject
- 스위프트
- foundation models
- CoreData
- Swift Format
- Fastlane
- awakeFromNib
- 프로그래머스
- prepareForReuse
- UIKit
- ios
- rxswift
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |