iOS 개발

iOS 개발

[iOS 개발] TDD 정의 및 장단점

개발을 시작한 이래로 지겹게 들었던 TDD.. 오늘은 TDD가 무엇이고, TDD의 장단점에 대해서 살펴보겠다. TDD란? TDD란 테스트 주도 개발(Test Drvien Development)을 뜻한다. 소프트웨어를 개발하는 여러 방법론 중의 하나로써, 제품이 오류 없이 정상 작동하는지 확인하기 위해 모든 코드는 테스트를 거치게 된다. TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성한다. 테스트가 실패할 경우 테스트 통과를 위해 코드를 수정하고, 테스트가 성공할 경우 성공한 코드를 리팩토링하는 과정을 거친다. 이를 그림으로 표현하면 다음과 같다. 그렇다면 이 TDD의 장점이 무엇이길래 많은 곳에서 이를 활용하려고 하는것일까? 해당 ..

iOS 개발

[Git] commit template 만들기

개발자들간에 작업을 할 떼 커밋 컨벤션을 통일하기 위해서 작성 양식같은 것을 설정하곤 한다. 기능을 추가할 때는 feat, 버그를 수정할 때는 fix와 같은 타입을 쓰면서 작업을 하는데 간혹 이건 어떤 타입의 커밋이지..? 헷갈렸던 경험이 있다. 그럴때마다 작성해두었던 커밋 컨벤션 작성 양식 페이지를 들어가 찾아봐야만 했고, 이러한 방식이 그닥 효율적이지 않다고 느끼고 있던 찰나 commit template을 따로 설정할 수 있다는 사실을 알게 되었다. commit template을 작성하는 방법은 다음과 같다. commit template 생성 방법 (터미널 기준) 1. 터미널에서 .git이 있는 현재 프로젝트 폴더에 다음 명령어를 입력 vi .gitmessage.txt 2. .gitmessage.tx..

iOS 개발

[iOS개발] Fastlane Match 적용하기

iOS앱의 경우 배포 뿐만 아니라 개발 과정에서도 복잡한 인증이 필요하다. Xcode에다가 이 앱을 개발한다는 개발자 프로그램 인증서와 Profile을 등록해야 되고, Appstore Connect에 앱을 업로드할 때도 이러한 인증 과정이 필요하다. Fastlane을 사용하더라도 이 인증 과정은 진행해야 하는데, 크게 두 가지 방법이 있다고 한다. 1. Cert,Sigh를 이용하는 방법 2. Match를 이용하는 방법 Cert,Sigh는 유저가 특별히 따로 설정해줄 필요는 없고, 애플 계정을 제대로 입력해뒀고, 인증서를 로컬 Keychain에 넣어줬다면 알아서 인증을 진행해주는 방식이다. 심지어 로컬에 인증서가 따로 없더라도 Cert,Sigh가 알아서 인증서와 프로필을 다운받아 진행해준다고 한다. Mat..

iOS 개발

[iOS 개발] Fastlane 적용해보기

새로운 프로젝트에 적용해볼 것들을 회의하다가 팀원이 배포 자동화를 적용해본 적이 있냐는 질문을 했다. 아키텍처, 라이브러리에 대해서만 생각하다가 배포 자동화라는 말을 들으니 아직 내가 경험해보지 못한 것이 많다는 것을 깨달았고, 곧바로 이번 프로젝트에 적용 해보려 한다. (TDD도 언젠가는..) 물론 지금까지 개인, 회사 앱을 배포한 경험이 10번 정도 밖에 되지 않았긴 하지만 하나의 iOS 앱을 배포하기 위해서는 꽤나 번거로운 과정들이 있다는 것을 알고 있었다. 그리고 이러한 배포를 간단하게 시간을 절약하며 할 수 있는 방법인 Fastlane을 알게 되어 이를 적용해보려 한다. Fastlane이란? Fastlane은 ruby 기반 오픈소스 라이브러리로 Android, 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은 유저에게 무언가 알려주는 역할이 아닌, 애플리케이션 내에서 정보를 전하기 위해 "알림을 방송한다"는 역할을 가지고 있다. 하지만 이 알림 즉..

iOS 개발/Combine

[Combine] combine 정리2 (sink, handleEvents, receive)

sink handleEvents(receiveOutput: ) receive(on: ), subscribe(on: ) 1. sink 애플 개발자 문서를 보면 sink 란 클로저 기반의 동작이 있는 subscriber를 절대 실패하지 않게 하는 publisher와 연결하는 것 그렇기 때문에 에러 타입은 Never 일때만 가능(그래서 회사 subject 에러 타입이 죄다 Never인 것) func sink(receiveValue: @escaping ((Self.Output) -> Void)) -> AnyCancellable Return Value 수신 된 값의 할당을 종료할 때 사용하는 Cancellable 인스턴스를 리턴한다. 결과를 할당해제 한다면 sumbscription stream을 해제하게 된다. ..

iOS 개발/Combine

[Combine] Operater란? (1)

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

bamtorii
'iOS 개발' 카테고리의 글 목록 (2 Page)