본문 바로가기

🍎 iOS/DevNote17

[Github] 우리는 왜 Squash & Merge와 No Fast-forward Merge 방식을 채택했을까? 서론 DDD 개발 동아리에서 진행 중인 프로젝트에서, 브랜치 전략과 함께 어떻게하면 커밋기록을 깔끔하게 관리할 수 있을까 라는 고민으로 Merge 방식에 대해 생각해보게 되었습니다. Commit History 관리를 잘해야 한다. 라는 얘기는 들어봤지만, 막상 프로젝트를 하면 잘 확인하지도 않는 Commit History가 왜 중요하지 라는 의문을 갖고 있었습니다. 이번 글에서는 프로젝트에서 Squash & Merge와 No Fast-Forward Merge를 사용하기까지 공부했던 내용들과 사용하면서 느낀 바를 정리하고자 합니다. 단순하게 Merge를 해왔다면 지금까지 저는 단순히 Conflict만을 피하기 위해 Rebase 후, Default Merge 방식만을 채택해왔습니다. 그에 따른 결과는 아래의.. 2024. 2. 4.
[Swift] @main Notion에 정리한 내용을 옮겨왔다. 요약 기존에는 UIKit과 AppKit의 프레임워크별 entry point 진입을 위한 attribute가 달랐다.(@UIApplicationMain, @NSApplicationMain) 개발자가 크게 신경쓰지 않는 UIApplicationMain과 NSApplicationMain을 범용적이고 간단하게 작성하기 위해 swift 5.2부터 @main attribute로 통합하였다. 즉, @main은 top-level code인 @UIApplicationMain이나 @NSApplicationMain attribute를 호출해 UIKit이나 AppKit 내에 있는 main()를 호출하기 위한 attribute이다. @main을 정리한 이유 Swift에서도 디바이스가 앱의.. 2023. 7. 30.
[UIKit] UITableView에 Cell 내부 UIButton이 동작하지 않는 이유( = ContentView) contentView를 보니 예전에 내부 Button이 동작하지 않는 이유를 찾느라 고생했던 기억이 나서 정리했다. Notion에 정리한 내용을 옮겨왔다. 발생가능한 이슈 UITableViewCell 내부에 배치한 UIButton에 대해 Delegate패턴, Closure패턴을 활용해도 동작하지 않는 상황 요약설명 UITableViewCell 위에 ContentView가 있다. Cell을 커스텀하기 위해선 ContentView 위에 다른 view들을 배치해야 한다. 그렇지 않으면 우리가 보는 것과 달리 ContentView를 클릭하게 되며, 다양한 문제를 겪을 수 있다. 설명 애플 공식문서에서는 다음과 같이 설명한다. contentView는 cell 객체의 content view…라는 재귀같은 설명을 하.. 2023. 7. 28.
[Swift] 프로토콜(Protocol) 개념 정리 프로토콜(Protocol)이란? Swift Language Guide를 보면, 프로토콜에 대한 정의가 아래와 같이 적혀있다. A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality. 프로토콜은 특정 작업이나 기능에 적합한 메서드, 속성, 그 외 필수요소의 청사진을 정의한다. 그리고 프로토콜은 일급 객체이며, 기본적으로 규약, 협약이라는 의미를 가진다. 일급객체란? (쉽게 말해 변수나 상수처럼 사용 가능하다는 의미) - 변수에 할당 가능 - 함수의 파라미터로 전달 가능 - 반환값으로 사용 가능 규약과 협약은 '~을 해야한다' 또.. 2023. 5. 26.