전체 글

회사

Util 클래스란?

iOS 개발을 진행할 때 Util이라는 폴더를 만들어 작업을 진행하는 경우가 많다. 나도 Util에는 프로젝트 전역에서 쓰일 것 같은 것들을 넣어놓고는 하는데 그렇게 따지면, Extension도 전역에서 쓰니까 Util 아니야? 라는 생각이 들어서 Util에는 어떠한 것들이 들어가야 하는지 정리해보고자 한다. 보통 Util은 문자열 관련, 랜덤값 생성, 날짜 및 시간 처리 등 프로젝트 전역에서 사용되는 틀정 로직이나 독립적인 기능을 구현해둔 곳이라고 한다. 밑에 블로그에 따르면 Util에 속하는 파일들의 특징으로는 세가지가 있는데, 1. 프로젝트 전역에서 사용될 수도 있는 기능 2. 특정 로직이나 독립적인 기능 3. 가능하면 어떤 상태를 가지지 않는 기능 그리고 Util에 속해있는 요소들은 1. 수정을 ..

기타

git 명령어 정리 - 수정 중

Git 명령어 원격 main 브랜치에서 현재 브랜치로 변경사항 받아오기 작업 중인 브랜치에서 Git pull origin main 작업중인 파일 내 브랜치에 올리기 Git add. Git commit -m “asdfsdf” Git push origin feature/accountMain git checkout A git merge B B 브랜치에서 일어난 변경사항이 A 브랜치에 합쳐짐 // .xcodeProj에서 conflict 발생시 터미널로 파일명.xcodeproj - 내가 작업중인 코드가 변동사항이 별로 없을 경우 그냥 스테이지 삭제 후 pull 받아오면 됨 // 1. A 브랜치에 변동사항이 있는지 모르고 이미 커밋을 한 상황이라면 가장 최근 커밋을 취소 git reset HEAD^ // 2. 로컬..

iOS 개발/Combine

[Combine] Operater란? (1)

Combine을 그래도 공부하다 보니까 이제서야 기본적인 틀이 갖춰진 것 같다. 이때까지 비동기 프로그래밍을 할 줄 안다고 이력서에 거짓말을 치고 있었다는 것 또한 깨닫게 되었다..허허허허허헣 Combine은 다음과 같이 크게 3가지로 이루어져 있다고 말했다. 1. Publisher 2. Subscriber 3. Operator Publisher, Subscriber에 관련된 내용은 어느정도 이해가 됐기 때문에 Operator의 정의에 대해서 알아보자 Operator는 그림과 같이 Publisher가 이벤트를 방출할 때 그 이벤트를 가공해서 Subscriber에게 전달해주는 역할을 한다. 좀 더 자세히 설명하면 다음과 같다. - Publisher 프로토콜을 채택한다. - 선언적이므로 값 타입이다. - 값..

iOS 개발/DiffableDataSource

[DiffableDataSource] DiffableDataSource 사용법(1)

오늘은 간략한 예제와 함께 DiffableDataSource의 실제 사용법에 대해 살펴보는 시간을 갖겠다. Section, Item 클래스 생성하기 UICollectionViewDiffableDataSource는 Section identifier, Item identifier 이렇게 두 개의 generic 타입을 가진다. 우선 Section을 생성하겠다. 1. Section 생성하기 Section Type은 가변적이라면 Class 타입으로 생성하고, 고정된 섹션을 가진다면 enum 타입으로 생성해도 된다. class Section: Hashable{ let id = UUID() var title: String var people: [Person] init(title: String, people: [Per..

iOS 개발/Combine

[Combine] Publisher Future와 CompletionHandler의 차이

Apple에서는 프로토콜로 미리 구현한 Publisher가 존재한다. 오늘은 해당 Publisher에 대해 살펴보고, 그 중 Future에 대해 자세히 알아보는 시간을 갖고자 한다. Publisher를 간략하게 설명하면, Subscription을 만들고 Subscriber들에게 이벤트를 방출하는 타입을 위한 프로토콜이다. 그리고 Apple에서 이러한 Publisher를 프로토콜로 미리 구현했는데, 다음과 같다. 1. Just 2. Future 3. Deffered 4. Empty 5. Fail 6. Record 7. AnyPublisher 회사 코드에서 자주보이는 것들은 Future, AnyPublisher정도 였던 것 같은데 생각보다 많은 Publisher들이 존재했다. 오늘은 간단하게 Just를 살펴..

iOS 개발

DiffableDataSource 정의

기존에 TableView나 CollectionView를 구성할 때 우리는 DataSource와 Delegate를 활용해 구현을 했다. DataSource는 데이터를 받아 뷰를 그려주는 역할을 한다. 뭘 어떻게 보여줄거냐를 해주는 것이 DataSource라고 생각하면 된다. Delegate는 어떤 행동에 대한 "동작"을 제시하는 역할을 한다. DataSource가 "보여주는" 역할을 담당했다면 Delegate는 사용자가 보이는 부분 중에 어떤 것을 클릭하거나 어떠한 행동을 했을 때 그 행동에 대한 동작을 수행하는 역할을 한다. 그러던 중 WWDC 19에서 Diffable DataSource가 등장하게 되었다 DiffableDataSource란? TableView 또는 CollectionView를 그리기 위..

iOS 개발/Combine

[Combine] CurrentValueSubject & PassthroughSubject 예제(2 - 1)

앞서 살펴보았던 예제들 말고도 조금 다른 예제들도 봐야 내가 이해할 것 같아서 조금 더 알아보도록 하겠다. CurrentValueSubject 예제 // subject 생성 let currentValueSubject = CurrentValueSubject("기본값") // subscriber1 currentValueSubject .sink(receiveCompletion: { print("1 번째 completion: \($0)") }, receiveValue: { print("1 번째 value: \($0)") }) // subscriber2 currentValueSubject .sink(receiveCompletion: { print("2 번째 completion: \($0)") }, receiveV..

iOS 개발/Combine

[Combine] Subject 정의 및 예제(2)

저번에 살펴보았던 Publisher와 Subscriber에 이어서 Subject에 대해 살펴보도록 하겠다. 회사에서 개발된 코드의 VM에는 CurrentValueSubject, PassthroughSubject가 즐비하게 늘어서 있기 때문에 무적권 알아둬야 할 것 같다.. Subject란? subject는 외부 발신자가 element를 publish할 수 있는 방법을 제공하는 publisher이다. 그냥 publisher라고 이해해보자.. 이러한 Subject는 Publisher 프로토콜을 채택하고 있다. Combine에는 미리 만들어진 Subject가 2가지 존재한다. 1. CurrentValueSubject 2. PassThroughSubject CurrentValueSubject란? single v..

bamtorii
bamtori