일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 동시성
- 학과별커뮤니티
- SwiftUI
- ios
- uikit
- async
- collectionview
- swift
- 이론
- 스트럭트
- CS
- 반응형
- 옵셔널
- WeatherKit
- mvc
- 기초문법
- 토이프로젝트
- struct
- RxSwift
- 실습
- 구름톤 유니브
- Optional
- 네트워크
- MVVM
- 대표
- Kingfisher
- GCD
- 세종대학교
- 앱개발
- 프로토콜
- Today
- Total
목록2025/01 (10)
스윞한 개발자

안녕하세요. 이번 포스팅은..! 동기, 비동기, 동시, 직렬에 대해 정리해 보고 GCD에 대한 간단한 톺아보기와 늘 헷갈리던 Swift Concurrency의 개념과 둘의 차이점에 대해 정리해 보겠습니다. 이번에 GCD에 대해 공부해 보다, WWDC 2021에 나온 swift concurrency가 GCD가 있는데 왜 나왔을까 하는 생각이 들었습니다. 우선 GCD에 대해 간단히 정리해 보면, #GCD기존의 Swift는 동시성 프로그래밍을 구현하기 위해서 GCD를 사용해 왔습니다. 비동기의 코드 블록을 DispatchQueue라는 매니저(Queue)에 넣어서 블록을 스레드에 작업을 할당하는 방식입니다. GCD는 주로 @escaping 클로저를 활용해 작업 객체에 대한 콜백을 받습니다. 그렇다면 잘 사용하..

안녕하세요! 오늘은 뷰의 드로잉 사이클에 대해 정리해보려고 합니다! # 뷰의 드로잉 사이클이란?뷰가 로드되거나 변경이 생겼을 때 이를 화면에 적용시켜 그리는 과정을 의미합니다. 뷰가 변경되었을때, 즉각적으로 처리되지 않으며 Main Run Loop에 의존해 업데이트 됩니다. * Main Run Loop란?위의 그림을 보시면, iOS의 애플리케이션과의 모든 상호 작용은 이벤트 대기열에 추가됩니다. 그리고 대기열에 있던 이벤트를 가져와 각 과정을 거쳐 Run Loop가 돌아가면서 하나씩 처리하게 됩니다. 이러한 메서드 호출이 반환되면, 제어는 Main Run Loop로 돌아가게 되고 업데이트 주기가 시작됩니다. 이때, 업데이트 주기는 뷰를 배치하고 다시 그리는 역할을 하게 됩니다. * 업데이트 주기..

안녕하세요! 이번 포스팅에서는 AutoLayout의 우선순위! Content Hugging Priority, Content Compression Resistance Priority에 대해 공부하고 정리해 보려고 합니다. Content Hugging Priority, Content Compression Resistance Priority에 대해 접근하기 전에 알아야 할 개념들에 대해 정리해 보겠습니다.#AutoLayout PriorityContent Hugging Priority, Content Compression Resistance Priority은 iOS의 AutoLayout의 우선순위입니다. 오토레이아웃에서 뷰의 크기를 어떻게 결정할지에 영향을 주는 제약 조건 우선순위입니다! 요즘, 처음으로 돌아..

안녕하세요! 요즘, 캐싱에 대해 많은 글을 쓰고 있는 것 같습니다..! 캐싱의 한 부분을 공부하다 보니 관련된 여러 주제로 뻗어나가는 것 같아요. 그래서 이번 포스팅은..! 이미지 캐시와 이미지 로더를 통합해 개선하는 과정과 개념에 대해 정리해 보려고 합니다. 어플이 이미지를 다운로드하는 경우, 일반적으로 이미지를 로딩하는데 시간이 걸립니다. 앱이 동일한 이미지를 여러 번 다시 로드할 때 불필요한 작업이 될 수 있고 사용자는 불편함을 느낄 수 있습니다. 테이블뷰나 컬렉션뷰를 가지고 있는 어플이 대부분일 것입니다. 앱을 실행하고 스크롤할 때 거의 대부분의 사용자가 버벅거리는 환경을 경험해 보았을 것입니다.-> 이러한 이슈는 이미지 렌더링이 한 번에 이루어지지 않아서 생긴다고 합니다. LazyStac..

안녕하세요! 지난 포스팅에서 Kingfisher의 이미지 캐싱과 커스텀 이미지 캐싱에 대해 정리해 보았는데, 문제점을 발견해 그에 관해 분석해 보고 파생될 수 있는 다른 문제점들에 대해 해결책을 생각해 보려고 합니다. 오늘 포스팅에서는 쟁점이 되는 목차들을 생각해 보았습니다. 1. 캐시에 저장된 이미지를 보여줄때 -> 서버 상의 이미지가 달라졌을 때저번 포스팅에서 Kingfisher에 캐싱 기능에 대해 정리를 하고 커스텀 캐시 코드를 작성해 보았습니다. 제가 가져오는 getImage 메서드는 싱글톤으로 구현했고 이미지 URL이 캐시에 존재하면 서버와의 통신을 하지 않았습니다. 구현을 마치고 캐싱 과정이 잘 되는지 확인했고 멋지게,, 포스팅을 했다고 생각하고 있었습니다. 근데,,, 곰곰이 생각해 보니,,..

안녕하세요!이번 포스팅에서는 애플 개발자라면 알고 있어야할 코드사이닝과 프로비저닝 프로파일에 대해 정리해보겠습니다. 먼저, 애플은 자신들의 기기에서 어떠한 프로그램이 동작하기 위해서는 인증을 받아야하는데 이 과정을 인증하는 방법으로 인증서를 사용하고 있습니다. # 애플 인증서앱이 실행될때마다 애플로부터 이 인증을 받았는지 확인합니다. * Development Certificate앱을 개발하고 테스트(테스트장치)할 때 사용합니다. * Distribution Certificate앱을 앱스토어에 배포할때 사용됩니다! # 프로비저닝 프로파일프로비저닝 프로파일은 iOS 기기와 애플의 인증서를 연결하는 것을 의미합니다. 애플 개발자 포털에서 생성하며 디바이스, 인증서, 앱 ID 간의 관계를 설정하는 과정입니다..

안녕하세요! 오늘은 옵셔널 내부구조를 파해쳐보겠습니다! 옵셔널이 무엇인지에 대해서는 개발을 하신다면 다들 잘 알고 계실 거라 생각합니다! 오늘은 swift에서 제공되는 옵셔널의 내부구조를 한번 파해쳐보겠습니다. 주석까지 하면 전체 코드는 500줄이 넘기에 되기에 차근차근 살펴보겠습니다! @frozen public enum Optional : ~Copyable where Wrapped : ~Copyable { case none case some(Wrapped)} @frozen은 ABI 안전성을 보장하기 위해서라는데,,,ABI에 대해서는 나중에 더 상세히 다뤄보겠습니다!옵셔널은 열거형으로 정의되며, 두 가지 케이스로 정의 됩니다.1. none : 값이 없음을 나타냅니다. (nil)2. some..

안녕하세요! 이번 포스팅에서는 VC의 생명주기에 대해 정리해 보겠습니다. ViewController의 생명주기는 UIKit으로 개발을 해보신 분들이라면, 대부분이 아는 지식이지만 좀 더 상세히 다뤄보겠습니다. ViewController의 생명주기를 알아보기 전에, 선행되어야 하는 앱 생명주기에 대해 먼저 간단하게 정리해 보겠습니다. # 앱 생명주기란?앱 생명주기는 앱의 전반적인 실행과 종료에 관련된 생명주기입니다.총 5개의 단계로 이루어져 있으며,1. Not Running2. InActive3. Active4. Suspended5. Background의 단계로 이루어져 있습니다. iOS 13이 나오기 이전까지는 이 모든 과정을 AppDelegate에서 진행했었습니다. 하지만, MultiWindow ..