전체 글

Tuist

Tuist 사용법 및 에러 모음

Tuist 사용법 1. 프로젝트 클론 2. tuist 설치 - 터미널에 curl -Ls | bash 입력 3. tuist clean 명령어 입력 4. tuist fetch 명령어 입력 5. tuist generate 명령어 입력 → 이후에 tuist edit할 경우 3,4,5 과정 수행 (정확히 말하면 345를 항상 모두 수행할 필요는 없는걸로 아는데 자세한 내용은 구글에서 검색하시길..) Carthage was not found in the environment. 에러 tuist fetch 시 다음과 같은 에러 발생. 이 경우 cartage가 설치되어 있지 않은 상태이기 때문에 brew install carthage 명령어를 통해 carthage를 설치해주면 된다. tuist fetch 명령어 실행 시..

회고

[회고] - 신입 iOS 개발자 4개월차 회고

회사에 입사하고 어느덧 4개월이라는 시간이 흘렀다 원래 회사가 운영중인 웹뷰 서비스를 네이티브 앱으로 전환하기 위해서 회사에 입사했지만.. 일단 결론부터 말하면 아직까지도 해당 작업을 진행하고 있지 않다. 아마 이번달부터 기획이 나오기 시작한다던데 하반기에는 죽음의 기간이 아닐까 싶다..(다른 프로젝트도 같이 진행해야 되서..) 그렇다면 4개월동안 멍 때리고 있었냐? 라고 하면 그건 또 어느정도 부정하고 싶다..ㅎ 일단 입사하고 1개월 동안 회사 분위기 적응 및 부족한 지식 습득의 시간을 가졌다면 그 뒤로 1개월 동안은 세미나를 진행하며 시간을 보냈다. 이 기간동안 나보다 6개월 가량 빨리 입사하신 iOS 개발자 분과 같이 클린 아키텍처, 모듈화에 관한 세미나를 준비할 수 있는 좋은 기회를 갖게 되었는데..

iOS 개발/UIKit

[UIKit] custom TextField 만들기

기존에 SwiftUI를 활용해서 만들었던 택배조회 서비스를 UIKit으로 개발하는 작업을 간간히 하고 있다. 기존 기획에는 다음과 같은 TextField가 존재했었다 화면을 보면 선택되지 않았을 시에는 border가 없다가 텍스트필드가 선택되는 경우 보라색이, 에러가 발생했을 경우(가령, 이메일 형식 아님) border 색과 placeholer 텍스트이 변하고, 텍스트 필드가 흔들리는 애니메이션을 추가하려고 했다. 그러나 SwiftUI를 활용할 당시에는 이 모든 기능을 개발하는데 어려움을 겪어서(지금 하면 할 수 있을 것 같기도..) 포기했었는데, 이번에 UIKit으로 개발하면서 해당 기능을 custom textfield를 통해 구현했다. 전체적인 로직은 다음과 같고, shaking과 같은 함수나 해당 ..

iOS 개발

[iOS 개발] NotificationCenter란?

NotificationCenter란? NotificationCenter에 어떤 이벤트가 발생했을 때 어떤 일이 처리될 지를 정의, 등록, 관리하는 것 NotificationCenter를 사용하면, 싱글톤과 비슷하게 클래스마다 데이터를 주고받기가 편해진다. 대신 NotificationCenter를 사용하는 모든 클래스에 NotificationCenter에 대한 의존성이 생긴다는 단점이 존재. 하나의 VC가 아닌 여러 개의 VC를 통제하기에 좋은 방법이다. 1:1 보다는 1:N에 사용하려고 주로 사용하는 것이 NotificationCenter인듯. Nofication은 유저에게 무언가 알려주는 역할이 아닌, 애플리케이션 내에서 정보를 전하기 위해 "알림을 방송한다"는 역할을 가지고 있다. 하지만 이 알림 즉..

아직정리안한것들모음집

[Coordinator] 내용 정리 2

코디네이터를 책임과 역할에 따라 분리하기 위 구조와 같이 Buy Coordinator를 만들어 Buy 용도에 맞는 화면들을 전환할 수 있다. 이렇게 용도별로 코디네이터를 분리하면 메인 코디네이터의 역할 부담이 줄어들고, 화면 전환 로직을 찾을 때 좀 더 빠르게 찾을 수 있지 않을까라는 장점이 있을 것 같다(주관적인 생각) Parent Coordinator와 Child Coordinator 이해하기 만약 여러 개의 코디네이터를 사용할 경우 다음과 같은 구조가 완성될 것이다. 이때 상위에 있는 parent coodinator와 하위에 있는 child coordinator의 관계를 맺어줘야 한다. 1단계: 이전에 우리는 Parent coodinator에 해당되는 MainCoordinator를 만들었었다. 이제..

아직정리안한것들모음집

[Coordinator] 내용 정리 1

(해당 글은 https://lena-chamna.netlify.app/post/ios_design_pattern_coordinator_basic/ 를 참고해 작성한 글입니다.) Coordinator란? 코디네이터는 하나 이상의 뷰 컨트롤러에게 지시를 내리는 객체이다. 여기서 말하는 지시는 화면 전환에 대한 지시를 의미한다. 코디네이터 패턴에서는 현재 ViewController에서 그 다음 ViewController로 이동할 때 직접 push나 present등의 화면 전환을 하지 않는다. 그 대신 모든 화면 네비게이션을 코디네이터가 관리한다. 즉, ViewController에서 Navigation의 책임을 다른 클래스로 분리한다. 따라서 ViewController들 간에 의존성이 낮아지게 된다. Coord..

Swift

[Swift] Swift Thread - GCD

GCD 관련 정리 잘한곳: https://sujinnaljin.medium.com/ios-%EC%B0%A8%EA%B7%BC%EC%B0%A8%EA%B7%BC-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-gcd-grand-dispatch-queue-1-397db16d0305 GCD란? Grand Central Dispatch의 줄임말이다. Swift에서 스레드 관련 작업은 Grand Central Dispatch API를 통해 처리한다. GCD는 클로저 블록 안에 있는 특정 작업을 큐에 올리고, 해당 큐를 특정 스레드에 실행하는 방식이다. 멀티 코어와 멀티 프로세싱 환경에서 스레드 프로그래밍을 효율적으로 할 수 있도록 애플이 개발한 기술로써 적절하게 사용해 Thread-safe하게 구현..

Clean Architecture

[Clean Architecture] 만들면서 배우는 클린 아키텍처 9장

9장. 애플리케이션 조립하기 의존성 주입 이용하기 앞에서 유스케이스, 웹 어뎁터, 영속성 어뎁터를 구현했으니, 이제 이것들을 동작하는 애플리케이션으로 조립할 차례 3장에서 이야기했듯이 애플리케이션이 시작될 때 클래스를 인스턴스화하고 묶기 위해서 의존성 주입 메커니즘을 이용 왜 조립까지 신경 써야 할까? 왜 유스케이스와 어탭터를 그냥 필요할 때 인스턴스화하면 안 되는 걸까? 코드 의존성이 올바른 방향을 가리키게 하기 위해서입니다(안쪽으로 향하도록) 만약 유스케이스가 영속성 어탭터를 호출해야 하고, 스스로 인스턴스화한다면 의존성의 방향이 잘못된것이다. 해당 이유가 바로 아웃고잉 포트 인터페이스를 구현한 이유입니다. 유스케이스는 인터페이스만 알아야 하고, 런타임에 이 인터페이스의 구현을 제공받아야 한다. 이러..