🍎 iOS 26

[iOS] 자체 private repository 라이브러리 Cocoapods 배포하기

회사에서 주요 비즈니스 로직에 사용되는 코드 모음을 개발할 필요가 있었는데, 이 사이즈가 크기도 하고 평소에 나만의 라이브러리를 만드는것에 관심이 있어서, 단순 프로젝트 내 코드 모음이 아닌 사내 라이브러리를 배포해보기로했다. *해당 글은 사내에서 사용할 라이브러리이기 때문에 private repository 에서 Cocoapods로 배포하는 과정이므로 공개 repository 배포와는 과정이 조금 다를 수 있습니다. 먼저 private repository를 Cocoapods으로 배포하여 라이브러리 형태로 사용하기 위해서는 2가지 레포지토리가 필요하다.- pod repository (개발한 라이브러리 코드 레퍼지토리)- podspec repository(해당 Cocoapods 라이브러리의 podspec을..

[iOS] Xcode Cloud를 활용하여 iOS CI/CD 환경 구축하기

1. iOS CI/CD 툴 선택 기준1) Github와 연동되는가2) Slack을 통해 팀에게 알릴 수 있는 Webhook 기능을 제공하는가3) Test를 진행할 수 있는 환경인가4) 소요되는 비용 2. iOS CI/CD Tools 특징보통 Xcode cloud, Github Actions, Fastlane, Bitrise를 사용하는 것으로 보인다.여기서 어떤 툴을 사용해야할지 선택해야하니 .. 다른 분들의 적용기들을 참고해서 대략적인 특징을 정리해보았다. 1) Github Actions현재 회사 개발팀에서 활용하고 있는 배포 자동화 툴이다. 장점- Github 자동화툴인만큼, Github와 호환성이 좋으며 내부에서 심플하게 자동화 workflow 구축 가능하다는 점이 장점- Github에서 다양한 Te..

[iOS/Swift] MVVM-C + Clean Architecture 리팩토링

MVVM-C(Coordinator)로 되어있는 프로젝트를 진행하던 중, ViewModel이 API 통신 + 비즈니스 로직 등 모든 로직을 처리하면서 한 클래스가 너무 많은 역할을 가져가고 있다는 생각이 들었고, 이에 따라 유지보수에 많은 시간이 소요된다고 생각했다. --> 객체지향 SOLID의 S(RP, 단일 책임 원칙)에 거리가 멀어 응집도가 낮고 결합도가 높음 --> 유지보수에 많은 시간 소요 + 단위 테스트의 어려움 이미 MVVM-C인 패턴에서 ViewModel의 데이터 로직 - 비즈니스 로직을 분리해줄 아키텍처가 있을까 해서 VIPER나 RIBs 등 여러가지 아키텍처에 대해 조사해본 결과, 현재 아키텍처에서 Clean Architecture의 원리를 도입하는 것이 가장 의도와 적절한 아키텍처라는 ..

[iOS/GCD] 4. async/await (Swift 5.5 ~) (feat. vs Combine, RxSwift)

async/await이 나오게 된 배경 메인 스레드에서 다른 스레드로 작업을 보내고 -> 해당 스레드에서 다른 스레드로 작업을 보내고 .... 이런식으로 이어나가면서 completionHandler를 진행하게 되면, 콜백 지옥에 빠지게된다. func processImageData(completionHandler: (_ result: Image) -> Void) { loadWebResource("a.txt") { dataResource in loadWebresource("b.txt") { dataResource in decodeImage(dataResource, imageResource) { imageTmp ..... async/await를 도입하면? func processImageData() async ..

🍎 iOS/GCD 2023.07.24

[iOS/GCD] 3. GCD의 주의사항

주의해야 하는 사항 1. UI 관련한 작업은 반드시 메인 스레드로 보내줘야한다. (DispatchQueue.main.async) DispatchQueue.global().async { // 네트워크 통신 (데이터 다운로드) DispatchQueue.main.async { // UI와 관련된 작업 } } 2. 비동기 처리를 하는 함수에서는 return 문으로 반환하면 비동기적 실행으로 인해 nil을 return하므로, 탈출 클로저를 사용하여 결과값을 반환해야한다. (Apple에서는 이를 completion Handler라고 명칭함) func getImages(url: String, completionHandler: @escaping (UIImage?) -> Void) { let url = URL(strin..

🍎 iOS/GCD 2023.07.23

[iOS/Swift] URLSession vs Alamofire

iOS 앱을 만들 때 거의 필수적으로 네트워킹을 구현하는 경우가 많다. URLSession, Alamofire 모두 사용해보았을 때 각각 원리가 어떻게 되고, 장단점이 어떻게 되는지 분석하여 현재 프로젝트 리팩토링이나 다음 프로젝트를 진행할 때 기술 선택 시 도움이 되고자 비교해보고자 한다. URLSession vs Alamofire URLSession은 애플 프레임워크에서 제공되는 가장 기본적인 방법이며, Alamofire/Moya는 서드파티 라이브러리이다. Get과 Post 각 메소드에 대해 라이브러리 별 사용을 비교할 것임. (어차피 delete, put, patch는 모두 Post와 같이 body값을 보내주는 형태이기 때문에 생략) 먼저 URLSession, Alamofire를 비교해보자. 1) ..

[iOS/UIKit] UITableView, UICollectionView 다시 살펴보기

안녕하세요, 오늘은 항상 프로젝트에서 써왔지만 !!제대로!! 원리와 몰랐던 개념을 다시 정리해보고자 UITableView와 UICollectionView를 뜯어보고자 합니다. 1. UITableView https://developer.apple.com/documentation/uikit/uitableview UITableView | Apple Developer Documentation A view that presents data using rows in a single column. developer.apple.com - 하나의 컬럼을 사용하여 여러가지 행 데이터들을 보여주는 뷰이다. -> 세로 스크롤만 가능하다는 점을 알 수 있음 - 새삼스럽게 다시 알게된 사실이지만 UITableView는 UIScr..

[iOS-HIG] HIG를 읽으면서 새로 알게된점, 느낀점 (230704 수정)

https://developer.apple.com/design/human-interface-guidelines/ Human Interface Guidelines | Apple Developer Documentation The HIG contains guidance and best practices that can help you design a great experience for any Apple platform. developer.apple.com https://developer.apple.com/ios/planning/ Planning your iOS app Learn about the tools, technologies, and best practices for building apps for i..

🍎 iOS/HIG 2023.05.13

[iOS] HIG, Human Interface Guideline이란 무엇인가? 왜 알아야 하는가?

Human Interface Guideline이란? https://developer.apple.com/design/human-interface-guidelines/ Human Interface Guidelines | Apple Developer Documentation The HIG contains guidance and best practices that can help you design a great experience for any Apple platform. developer.apple.com "HIG"는 애플 플랫폼의 훌륭한 경험을 디자인할 수 있도록 돕는 지침과 모범 사례가 포함되어있다" Apple 플랫폼과 통합되는 훌륭한 앱을 설계하기 위한 depth가 깊은 정보와 UI 리소스를 얻으십시오..

🍎 iOS/HIG 2023.05.13

[iOS/Swift] Notification Center

노티피케이션 센터 https://developer.apple.com/documentation/foundation/notificationcenter NotificationCenter | Apple Developer Documentation A notification dispatch mechanism that enables the broadcast of information to registered observers. developer.apple.com 노티피케이션 센터란, 등록된 관찰자에게 알려줄 수 있도록 하는 알림 메커니즘이다. 각 실행하고 있는 앱은 모두 기본적으로 노티피케이션 센터를 가지고으므로 해당 클래스를 이용하면 된다. 언제 활용하는가? 앱 내에서 공식적인 연결이 없는 2개 이상의 컴포넌트 간..

반응형