🍎 iOS 25

[iOS] Xcode Cloud를 활용하여 iOS CI/CD 환경 구축하기 (feat. CI/CD Tool들 특징)

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에서 다양한 ..

[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개 이상의 컴포넌트 간..

[RxSwift, RxCocoa] 주요 Operator 특징 및 차이점 정리 (계속 업데이트 예정)

혹시 틀린 부분이 있다면 지적해주시면 감사하겠습니다 :) 1. map vs flatMap vs compactMap https://limjs-dev.tistory.com/139 https://huniroom.tistory.com/entry/RxSwift-Transforming-Operator-toArray-map-compactMap 공통점 : 모두 Observable을 특정 로직을 적용하여 데이터를 바꾼다. 차이점 : - map은 변환 아이템을 Observable로 바꿔 return해주고, - flatMap은 단순히 Observable로 바꾸는게 아니라 평평하게 하나의 Observable로 바꿔준다. 예를들어 map은 Observable 이렇게 return 해주지만 flatMap은 Observable 이렇..

🍎 iOS/RxSwift 2023.03.16
반응형