디자인 패턴의 분류 1. 새로운 소프트웨어를 개발할 때마다 대부분 개발자는 어떤 클래스를 만들고 어느 시점에 객체를 생성하고 소멸시킬지, 데이터를 어떻게 받아서 처리할지, 구조 설계를 어떻게 할지 고민 2. 디자인 패턴 분류는 위와 같이 소프트웨어 코드를 작성할 때 자주 반복되는 특정 상황에서 설계를 용이하게 하며 코드의 재사용이 용이하도록 패턴을 정리해 놓은 것 GoF는 디자인 패턴을 목적과 범위로 분류 • 목적 패턴이 무엇을 하는지 정의하는 것으로 "생성", "구조", "행위" 중의 한 가지 목적을 갖습니다. ◦ 생성 (Creational Pattern) 객체의 생성 과정에 관여하는 패턴입니다. ◦ 구조 (Structural Pattern) 클래스나 객체의 구성을 통해 더 큰 구조로 만들 수 있게 해..

// UIView+Extension.swift // Journey import UIKit extension UIDevice { var hasNotch: Bool { let bottom = UIApplication.shared.keyWindow?.safeAreaInsets.bottom ?? 0 return bottom > 0 } } 디바이스가 노치가 있는 것인지 없는 것인지 판별하기 위해 Extension으로 따로 빼서 만듦. // ChallengeViewController.swift // Joureny notchCase 라는 함수를 만들어 주었고 (viewDidLoad에 넣어줌) 옆에 이미지에서 보이듯이 노치가 있을 때는 스탬프가 삼각형 구조로 배열되어 있고, 노치가 없을 때는 스탬프가 일렬로 배열되어 ..
UIKit 프레임워크 UIKit은 iOS 애플리케이션 개발시 사용자에게 보여질 화면을 구성하고 사용자 액션에 대응에 관련된 다양한 요소를 포함 애플리케이션을 구현할 때 필수적인 부분이다. UIKit 소개 UIKit은 iOS 애플리케이션의 사용자 인터페이스를 구현하고 이벤트를 관리하는 프레임워크 UIKit 프레임워크는 제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등 사용자 이벤트 처리를 위한 클래스를 포함 테이블뷰, 슬라이더, 버튼, 텍스트 필드, 얼럿 창 등 애플리케이션의 화면을 구성하는 요소를 포함 UIKit 클래스 중 UIResponder에서 파생된 클래스나 사용자 인터페이스에 관련된 클래스는 애플리케이션의 메인 스레드(혹은 메인 디스패치 큐)에서만 사용 UIKit은 iOS와 ..
AVFoundation AVFoundation은 Apple 플랫폼에서 사운드 및 영상 미디어의 처리, 제어, 가져오기 및 내보내기 등 광범위한 기능을 제공하는 프레임 워크 주요 기능 미디어 재생 및 편집 디바이스 카메라와 마이크를 이용한 영상 녹화 및 사운드 녹음 시스템 사운드 제어 문자의 음성화 AVAudioPlayer Class AVAudioPlayer 클래스는 파일 또는 메모리에 있는 사운드 데이터를 재생하는 기능을 제공 AVAudioPlayer 주요기능 파일 또는 메모리에 있는 사운드 재생 (네트워크에 있는 사운드 파일은 재생 불가) 파일 재생 시간 길이의 제한없이 사운드 재생 여러 개 사운드 파일 동시 재생 사운드의 재생 속도 제어 및 스테레오 포지셔닝 앞으로 감기와 뒤로 감기 등의 기능 지원해..
Commit Type 1.feat 새로운 기능 추가 (new feature) 2.fix 버그 수정 (bug fix) 3.docs 문서 작성, 수정 (documentation) 4.style 코드 포맷팅, 세미콜론 누락 등 코드 변경이 없는 경우 5.refactor 코드 리팩토링 (refactoring) 6.test 테스트 코드, 리팩토링 테스트 코드 추가 7.chore 빌드 업무 수정, 패키지 매니저 수정 등 (production code 변경이 없는 경우) 8.perf 성능 개선 Issue Title [Commit Type] 이슈 제목 그리고 Commit Type 라벨, 각자 이름 라벨 추가 이슈 body는 체크리스트 타입으로 작성. 비워두진 말기 커밋 메세지 Description [#이슈번호] 해당 ..
Git-Flow main 제품으로 출시될 수 있는 브랜치, 배포 Release(Prod) 버전의 소스가 들어있는 branch 기본적으로 github 저장소를 생성하면 있는 branch이다. 배포이력을 관리하기 위한 용도로 사용한다. develop 다음 출시 버전을 개발하는 브랜치, 개발버전의 소스가 들어있는 branch 일반적으로 Master branch에 병합하기 전 최종 개발버전의 소스가 들어있다. 다음 Release될 버전의 소스라고 생각하면 된다. feature 기능을 개발하는 브랜치 개발자들이 기능개발을 위하여 생성/이용 하는 branch이다. 개발이 완료되면 develop와 병합하여 다른 사람들과 공유한다. release 이번 출시 버전을 준비하는 브랜치 hotfix 출시 버전에서 발생한 버그..
* 마크주석 **// MARK: - Properties** **// MARK: - @IBOutlet Properties** **// MARK: - @IBAction Properties** **// MARK: - View Life Cycle** viewDidLoad(), viewWillAppear()... **// MARK: - Functions** **// MARK: - Extensions** **// MARK: - UITableViewDataSource** **// MARK: - UITableViewDelegate** 프로토콜들 Extension 으로 빼기 * 함수 네이밍 서버통신 서비스함수명 + WithAPI IBAction 동사원형 + 목적어 ex) touchBackButton 뷰 전환 pop, p..

Interface Builder Annotation interface Builder를 줄여서 IB라고 붙이며, Outlet은 콘센트 개념, Action은 동작 개념 @IBAction 유저의 특정 이벤트 (터치, 드래그, 편집 등등) 감지해서 Controller에게 알리는 역할 특정 이벤트 발생 시 실행될 동작들을 정의 @IBOutlet 처리 결과를 View에 알리고 원하는 동작을 이끔 View에 존재하는 요소와 Controller를 연결하기 위한 변수 개념 * @는 At Symbol의 뜻으로 코드 자체의 특성을 가리킬 때 사용한다. 컴파일러에게 "나는 어떤 속성이야!" 라고 전하는 역할을 하는 예약어이다. 화면 전환 모달 특정 위치를 누르면 새로운 창이 기존 창 위에 뜨는 것 사용자의 이목을 끌기 위해 ..

viewWillAppear 뷰가 계층에 추가되고 화면이 표시되기 직전에 호출되는 메서드 화면이 나타날때마다 수행해야 하는 작업을 하기 좋은 시점 viewDidAppear 뷰가 계층에 추가되고 화면이 표시되기 직전에 호출되는 메서드 화면이 나타날때마다 수행해야 하는 작업을 하기 좋은 시점 viewWillDisappear 뷰가 계층에서 사라지기 직전에 호출되는 메서드 뷰가 생성된 뒤 발생한 변화를 이전 상태로 되돌리기 좋은 시점 viewDidDisappear 뷰가 계층에서 사라진 후 호출되는 메서드 1. viewDidLoad 뷰계층이 최초 메모리에 로드 된 후 호출되는 메서드 메모리에 처음 로딩 될 때 1회만 호출된다. 2. viewWillAppear 다른 뷰에 갔다가 다시 돌아오는 상황에 해주고 싶은 처리..

H.I.G 란 ? Human Interface Guide iOS의 3가지 핵심 가치 Clarity (명확성) - 가독성 높은 테스트, 이해하기 쉬운 아이콘, 최소화된 장식 - 기능 주도의 디자인, 중요한 요소들의 강조 Deference (존중) - 전체 활용을 활용한 컨텐츠 표시 - 메인 컨텐츠 이외의 다른 요소가 부각되지 않도록 - 베젤, 그라데이션의 활용 - 그림자 사용 최소화 - 밝은 인터페이스 유지 Depth (깊이) - 레이어와 모션을 활용해 계층을 표현 - 컨텐츠를 이동할 때 깊이감을 더해주도록 화면 전환 - 터치 및 검색 기능으로 컨텐츠에 엑세스 쉽도록 HIG의 디자인 6원칙 Aesthetic Integrity (심미적 통일) - 앱의 모양, 동작이 기능과 얼마나 잘 통합되어 있는지 나타낸다..