iOS 캠프 TIL - 2021.01.29 금
Swift 스터디 - 클로저
let sum: (Int, Int) -> Int = { (a: Int, b: Int) in
return a + b
}
Escaping Closure
클로저가 함수의 인자로 전달되지만 함수 밖에서 실행되는 것(함수가 반환된 후 실행되는 것)을 Escape한다고 하며, 매개변수의 타입 앞에 @escaping이라는 키워드를 명시해야한다.
아래의 경우에 자주 사용됨
- 비동기로 실행되는 경우
- completionHandler(완료에 따른 처리)로 사용되는 클로저의 경우
클로저의 Escaping은 하나의 함수가 마무리된 상태에서만 다른 함수가 실행되도록 함수를 작성할 수 있다는 점에서 유리함
즉, 이를 활용해서 함수 사이에 실행 순서를 정할 수 있다.
만약 함수가 끝나고 실행되는 클로저에 @escaping키워드를 붙이지 않으면 컴파일시 오류가 발생한다.
Wanted Live Talk 성장하는 iOS개발자 되기
새로운 기술 인사이트를 본인의 지식으로 습득하는 방법
- 최송이 - 카카오 iOS 개발자
-
https://zeddios.tistory.com/
- 성장이라는 추상적인 목표보다는 명확한 목표
- 작은목표를 빨리 해버리기!
- RxSwift를 공부하겠어! (X)
- RxSwfit에 XXX 기능을 해봐야지! (O)
- 사전 조사
- 애플 공식 문서 보세요!
- 공식문서의 카테고리를 보면 로드맵을 느낄 수 있다
- 공부한것은 글로 쓰기
- 피드백
- 퇴고 무한 반복
- 잘못된 정보는 빠르게 고치기
- 참고 링크 추가해놓기
프로젝트를 여러명이서 같이 개발할 때 생기는 문제점과 해결방법
- 안정민 - 카카오뱅크 iOS 개발자
- 블로그
프로젝트 거대화
- 사업은 커지는데 인력은 크게 늘어날 수 없다
- 결국 생산성을 늘려야 한다
Xcode 프로젝트 관리
xcodeproj
- 파일 생성시 프로젝트 및 인원이 많아질수록 빈번한 충돌 문제
- 인원이 많아지면 코드, 파일 샌산량 증가
- 프로젝트에 파일이 다수 추가됨
- 각 개발 환경을 타겟으로 관리하는 경우 프로젝트가 커질수록 인덱싱이 느려짐
- 대부분의 타겟은 같은 파일을 가짐
- 타겟 1개늘때마다 프로젝트 파일에 많은 내용이 추가됨
- 타겟이 늘어남에 따라 인덱싱 속도가 느려짐
- 파일 추가/삭제시 빈번한 충돌 발생
- 모듈로 분리하지 않는 경우 프로젝트 내에서 결합도가 빠른 속도로 증가
- 프로젝트 내에선 public, internal이 같은 개념
- 도메인이 다른 코드를 어디서든 가져다 정의할 수 있음 (격리화 불가)
- 각 도베인과의 결합이 생길 가능성 증가
- 다수가 작업시 결합도가 빠른 속도로 증가
- 각 기능을 모듈로 분리할 때 코드 분리가 어려움
- 프로젝트 내에선 public, internal이 같은 개념
- XCConfig를 적용하여 프로젝트 설정을 관리
- 공통 XCConfig를 생성
- 각 XCConfig는 공통 XCConifg를 토대로 함
- 적용한 XCConfig를 토대로 타겟을 정리
- 타겟 대신 스팀으로
- 각 기능마다 별도의 프로젝트로 분리로 코드 응집도 증가 및 결합도 감소
CI : Continuous Integration
- 통합된 코드에서 자신의 코드가 제대로 동작(빌드/테스트)가 되는지 확인
Continuous Delivery
- 앱이 항상 신뢰 가능한 수준에서 배포될 수 있도록 관리
- 빌드 및 테스트가 지속적으로 일어나므로 배포 또한 지속저그로 이루어져야 함.
- 배포의 어려움이 줄어들고, 재작업 시간이 점점 줄어듬
- 프로젝트가 커질수록 기능별 배포가 요구됨
아키텍처
- 템플릿 제공하는 아키텍처
- 기능을 세분화 해서 개발 후 유연한 결합할 수 있는 아키텍처
- 테스트코드 작성이 가능한 아키텍처
지금당장 BDD 시작하기
- 전찬주 - 원티드랩 iOS 개발자
TDD?
- 테스트 코드를 작성 -> 구현 코드 -> 리팩토링
BDD
- Behavior Driven Developement
Clean Swift
현재 원티드에서는 Clean Swift 아키텍처를 개선해서 사용중
- ViewController (UI디자인)
- 뷰 이벤트를 인터랙터에 전달, 프레젠터가 주는 데이터 표시
- Interactor (이벤트 처리)
- 이벤트 처리, 상태 관리, 모든 비지니스 로직 처리
- Presenter
Leave a comment