본문 바로가기

🍎 iOS52

[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.
[SwiftUI] @State, @Binding 오랜만에 SwiftUI로 프로젝트를 진행하게 되면서 간단하게 개념을 정리해둘 기회가 생겼다. State와 Binding을 알아보기에 앞서, 선행되어야 할 개념인 Source of Truth와 Property wrapper에 대해 짚고 넘어가자. Source of Truth 개요 Source of Truth는 데이터 원본이라 생각하면 되는데, State로 선언된 Property는 모두 Source of Truth를 생성하고 참조할 수 있게 된다. Source of Truth와 State, Binding의 흐름 SwiftUI에서는 property의 Storage를 관리하고, 데이터가 변경되면 이에 의존하는 View 계층의 일부를 업데이트한다. property를 SoT 개념을 활용해 한 곳에서 통합 관리함을써.. 2024. 1. 7.
[UIKit] UITableViewDiffableDataSource ( iOS 13.0+ ) Notion에 정리한 내용을 옮겨왔다. UITableViewDiffableDataSource 공식문서에서는 다음과 같이 설명한다. DataSource의 특수한 형태 간단하고 효율적인 방식으로 view의 데이터와 UI를 업데이트 관리하는 데 필요한 동작 제공 UITableViewDataSource 프로토콜에서 제공하는 모든 메서드 구현 제공 TableView에 DiffableDataSource를 연결하려면, cellProvider initializer를 이용해 DiffableDatasource를 만들어 연결하려는 tableView에 전달하면 된다. 그뒤에 snapshot을 구성하고 적용해, Data의 현재 상태를 생성하고, UI에 데이터를 표시한다. dataSource = UITableViewDiffabl.. 2023. 7. 30.
[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.