profile
iOS 개발자를 꿈꾸는 제인입니다 / 제가 나중에 다시 보려고 기록합니다 ✏️
post-thumbnail

UICollectionViewDiffableDataSource : SupplementaryView로 Section마다 다른 제목 구현하기

앞서 기본적인 UICollectionViewDiffableDataSource에 대해 설명한 포스팅과 이어집니다~! 1. UICollectionReusableView 를 상속한 커스텀 뷰 생성 2. collectionview에 앞서 생성한 커스텀 뷰 register

2022년 6월 17일
·
0개의 댓글
·
post-thumbnail

기본적인 UICollectionViewDiffableDataSource 설정하기

UICollectionViewDiffableDataSource와 UICollectionViewCompositionalLayout을 사용하여 아래와 같은 뷰를 그려보았다.한 CollectionView가 여러 Section으로 나눠져 있고, 각 Section마다 Item들

2022년 6월 17일
·
0개의 댓글
·
post-thumbnail

UICollectionView 셀 재사용 문제: 빠르게 스크롤시 잘못된 이미지가 나타나는 현상

UICollectionView나 UITableView를 만들때 셀에 이미지가 포함된 경우 빠르게 스크롤시 잘못된 이미지가 들어가는 상황이 발생한다. 이런 상황이 발생하는 이유는 iOS에서는 화면에 최대로 보여지는 셀 개수로만 컬렉션뷰를 구성하고, 스크롤하는 순간 화면

2022년 6월 10일
·
0개의 댓글
·
post-thumbnail

UICollectionView 셀의 이미지 로딩 속도 개선: NSCache로 이미지 캐싱

UICollectionView나 UITableView를 만들때 셀에 이미지가 포함된 경우 다음과 같은 두가지 상황을 고려해야한다.1\. 이미지가 로딩되는 속도가 느린 문제2\. 빠르게 스크롤시 맞지 않는 이미지가 나타나는 문제이번 포스팅에서는 첫번째 이슈인 이미지 로딩

2022년 6월 9일
·
0개의 댓글
·
post-thumbnail

UIViewController 서브클래스의 custom initializer 만들기('required' initializer 'init(coder:)' must be provided by subclass of 'UIViewController')

UIViewController을 상속받아서 커스텀뷰컨을 만드는 작업은 정말.. 항상하는 작업이다. 대부분은 따로 직접 이니셜라이저를 구현하지 않고 사용하기 때문에 특별한 문제가 없다. 그러나, 뷰컨에 뷰모델을 생성자 주입하려고 이니셜라이저를 만들었더니... 이런 에러

2022년 6월 5일
·
0개의 댓글
·
post-thumbnail

Custom View 생성시 init(frame:), init(coder:), awakeFromNib()

Nib/Xib 파일을 이용하여 뷰를 생성할 때 UIView의 필수 생성자 두개를 작성해야한다.init(frame: CGRect) → 코드로 뷰를 만들때 호출init(coder: NSCoder) → 스토리보드로 뷰를 만들때 호출그리고 awakeFromNib()는 XIB로

2022년 6월 2일
·
0개의 댓글
·
post-thumbnail

REST API란?

API의 시초는 하드웨어 독립성을 보장하기 위해서인데, 서로 다른 하드웨어 부품에 맞는 프로그래밍을 각각 하기보다는, 추상화 계층을 통해 한번만 작성한 코드를 여러 곳에서 공통적으로 사용할 수 있도록 하기 위해서 생겨났다.API는 개인 컴퓨터가 나오기 이전부터 존재한

2022년 5월 30일
·
0개의 댓글
·
post-thumbnail

[RxCocoa Traits] Driver

ControlProperty and ControlEventDriverSignalRxCocoa Traits 중 하나인 Driver에 대해 알아보자이해를 돕기 위해서 binder과 비교해서 설명하겠다.둘다 error 이벤트를 받지 않아서 UI 바인딩에 적합하다.스트림 공유

2022년 5월 4일
·
0개의 댓글
·
post-thumbnail

set의 연산을 이용한 Local - Remote DB 연동하기

네트워크 연결이 끊어진 오프라인 환경에서 데이터 변경사항이 생길 경우 먼저 Local에 저장한 후에, 네트워크가 다시 연결되면 Local의 변경사항을 Remote에 업데이트하는 방식으로 구현하였다. Remote에서 변경이 일어날 가능성은 없으므로 Remote변경사항

2022년 5월 2일
·
0개의 댓글
·
post-thumbnail

AppDelegate와 SceneDelegate

iOS는 사용자가 앱을 직관적인 방법으로 사용할 수 있도록 디자인되었다. 따라서 iOS 개발을 하면서 우리는 사용자 경험이 물 흐르듯이 자연스럽게 이루어질 수 있도록 신경써야한다. 그러한 관점에서 앱이 처음 시작되고 종료되어 메모리에서 내려갈때까지의 생명주기 iOS A

2022년 5월 2일
·
0개의 댓글
·

클로저 캡쳐리스트: 값타입과 참조타입일때

self를 캡쳐하면 클로저 안에서 self를 안써도 되는건가?왜 weak self는 하라고 안하지>?음.... weak self라고 했더니 다 옵셔널이 붙어서 난리네.. 뭔 차이지?프로젝트를 진행하다가 self와 weak self에 대해 헷갈렸다.그래서 둘의 차이에 대

2022년 5월 1일
·
0개의 댓글
·
post-thumbnail

[Operator] map과 flatMap

Swift에서 원래 flatMap은 요소들을 평평하게 펴주는 역할을 한다map과 동일하게 안에있는 요소들을 변형하는 기능도 하지만, 결과적으로 중첩된 배열을 단일 배열로 바꿔서 리턴한다. 이와 비슷하게, rxSwift에서 flatMap은 Observable을 평평하게

2022년 4월 30일
·
0개의 댓글
·
post-thumbnail

[Traits] Single과 Completable

Observable을 감싸고 있는 구조체임.asObservable() 사용시 다시 기본 Observable로 돌아갈 수 있음 SingleCompletableMaybe단 하나의 요소나 error만 방출하는 Observable의 변형인 Traits중 하나이다.언제 사용하냐

2022년 4월 30일
·
0개의 댓글
·
post-thumbnail

[Operator]combineLatest와 zip

디폴트로 combineLatest를 사용하고 특정한 경우에만 zip을 사용하기둘다 두 Observable을 합칠때 사용하지만, 합치는 방식이 다르다.Single의 경우 zip만 사용가능combineLatest는 두 Observable이 다른 타입인 경우에도 사용가능하지

2022년 4월 30일
·
0개의 댓글
·
post-thumbnail

Frame과 Bounds

frame은 view 자신의 superview의 좌표계 안에서 자신의 위치를 결정한다.아래 discussion에 보니 view의 사이즈와 위치를 세팅할 때 이 frame을 사용하라고 한다.frame을 세팅하면 view의 center 프로퍼티랑 bounds 가 자동으로

2022년 4월 22일
·
0개의 댓글
·
post-thumbnail

CGPoint, CGSize, CGRect

CGRect가 뭐지? View를 그릴때마다 항상 나오는 개념이라서 어렴풋이는 알고 있었는데 이번 기회에 확실히 정리해보려 한다View를 그릴 때는 시작 위치와 크기가 필요하다.CGPoint는 시작 위치인 x, y 좌표를 가지고CGSize는 시작 위치에서 얼만큼 갈 것인

2022년 4월 20일
·
0개의 댓글
·
post-thumbnail

[WWDC] Understanding Swift Performance

내가 작성하고 있는 코드의 성능을 향상시키려면 항상 다음과 같은 질문을 염두해 두어야 한다.인스턴스가 스택에 저장될까 힙에 저장될까?인스턴스를 전달시 RC 는 얼마나 증가될까?인스턴스의 메서드는 static, dynamic 중에 어떻게 dispatch될까?스택 영역에

2022년 4월 19일
·
0개의 댓글
·

값 타입과 참조 타입

Struct, Enum, String, Dictionary, Set, Tuple변수에 할당하면 스택 영역에 값이 저장됨변수를 다른 변수에 복사한 후 복사본을 변경하더라도 원본에 영향을 주지 않는다Class, Closure스택 영역에는 포인터(레퍼런스)만 할당되고 실제

2022년 4월 15일
·
0개의 댓글
·

Copy On Write

수정 (쓰기) 이 일어날 때 복사한다는 뜻참조를 통해 불필요한 복사를 줄여서 메모리를 절약할 수 있다.변수 a에 담긴 컬렉션타입을 다른 변수인 b에 할당할 때 바로 복사가 일어나지 않고다른 변수인 b가 수정이 될 때 그제서야 복사가 일어난다.그럼 수정이 일어나기 전까지

2022년 4월 15일
·
0개의 댓글
·
post-thumbnail

Hashable이 무엇이고, Hashable은 Equatable을 왜 상속해야할까?

Hashable이 무엇이고,Hashable은 Equatable을 왜 상속해야할까?Hash가 될 수 있다 == HashTable에서 찾을 수 있다 (자신의 해시값을 찾을 수 있어야 한다)해시테이블에서 해시값(Hash Value)을 찾으려면 key로 찾아야 하는데 그 ke

2022년 4월 15일
·
0개의 댓글
·