[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..
오늘은 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)는 어떤 점이 다른지, 어떤 원리로 실행되는지 궁금해서 공부해보고자 한다.(제가 공부하기 위해 ..
✏️ Localization이란?앱을 다양한 언어와 지역 환경에 맞게 번역하고 조정하는 과정 Localization은 앱을 언어와 문화권에 맞게 텍스트나, 날짜, 숫자, 형식등을 현지화 하는 과정이다. 한국어를 다른 언어로 번역하는 것 뿐만 아니라 각 문화권에서 익숙한 표현 방식까지 반영한다. 예를 들어 우리나라는 년/월/일 표기라면 영어권은 월/일/년을 사용하므로 다국어지원을 설정했을때 날짜 표기 방식도 함께 반영된다.영어는 복수형이나 문장 구조에 따라 표현이 달라지는 것들도 있기 때문에, Localization을 통해 문장이 어색해지는 걸 방지하고 네이티브처럼 자연스러운 문장을 제공할 수 있도록 한다 이번에 Apple Developer Academy에서 하는 쇼케이스를 앞두고 애플 본사에서도 직원이..
- Total
- Today
- Yesterday
- CoreData
- rxswift
- Swift Format
- ios
- XCTest
- asyne-let
- 클로저
- 스위프트
- closure
- UIKit
- awakeFromNib
- SnapshotTest
- SWIFT
- UITest
- swiftUI
- group tasks
- Swift Concurrency
- prepareForReuse
- 코딩테스트
- Xcode
- 백준
- AppGroup
- foundation models
- 프로그래머스
- ObservableObject
- Task
- internal Combine
- Fastlane
- combine
- GCD
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |