일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ribs
- combinecocoa
- Combine
- swift 5.9
- Swift Tuist
- swift 6
- Subject
- ios
- Subscribe
- realm
- xcode
- SeSAC
- swift db
- observable
- KeyPath
- uitableviewdiffabledatasource
- Tuist
- GCD
- JSON
- ios database
- Firebase
- SwiftUI
- 카카오뱅크 ios
- Tuist Swift
- arc
- Firebase Analytics
- 네트워크 통신
- swift database
- RxSwift
- swift
- Today
- Total
목록swift (24)
천원의 개발

안녕하세요. 천원입니다. 백그라운드에서 API를 호출하기 위해서 학습한 내용을 정리 하고자 이글을 작성합니다. Background Tasks 프레임워크 iOS 13부터 추가된 프레임워크로 시스템과 앱간의 background Task 요청을 담당하는 역할을 합니다. 해당 프레임워크에는 BGAppRefreshTask & BGProcessingTask 이렇게 두가지 타입이 존재하는데 BGAppRefreshTask는 30초 정도가 소요되는 작업에 사용되고 그 이상의 몇분이 소요되는 것들은 BGProcessingTask를 사용하게 됩니다. WWDC 2019 자료를 참고해 보면 사용자가 Foreground로 진입하는 시점을 시스템이 분석해서 그전에 호출하게 되고 그 외에도 유저의 백그라운드 앱 새로고침 설정, 배터..

안녕하세요. 천원입니다. 이 글은 제가 Tuist를 학습하면서 여러 프로젝트를 하나의 Workspace로 관리하는 방법을 정리한 글이며 앞선 포스팅을 확인하시면 조금 더 이해하기 편하실 것 같습니다. 여러프로젝트 관리하기 먼저 Workspace를 생성할 폴더를 만들어 줍니다. mkdir 폴더명 cd 폴더명 tuist init tuist init --platform ios editing tuist edit 그러면 위와 같이 Project파일이 생성되는데 우리는 Root를 Project로 만들지 않을 테니 삭제해 줍시다. 그런 다음 Project를 대신해서 Workspace 파일을 추가해 줍니다. import ProjectDescription let workspace = Workspace( name: "Tu..

안녕하세요. 천원입니다. 최근 iOS 개발 트렌드에서 가장 핫한 'Modular Architecture'을 도입하기 위한 도구인 Tuist를 학습하고자 이 글을 작성합니다. Tuist를 처음 접해보신 분들도 프로젝트에 적용할 수 있도록 진행하겠습니다. Tuist Xcode의 프로젝트를 Swift로 생성, 관리할 수 있도록 도와주는 CLI 도구입니다. Swift를 사용해서 프로젝트를 관리하기 때문에 우리가 .xcodeproj, .xcworkspace 같은 파일들로부터 발생하는 Git conflict에 대한 걱정이 필요 없죠. 또한 관리 측면에서 더 많은 개발 편의성을 제공해 준다고 합니다. 성능적인 개선 또한 존재하는데 모듈을 static framework 형태로 만들게 되면 dynamic link가 감소..

안녕하세요. 천원입니다. ui/unit 테스트 라이브러리인 Quick/Nimble을 학습하는 도중 TDD와 BDD개념을 정리하고자 글을 작성합니다. TDD TDD는 Test Driven Development의 약자로 테스트 주도 개발을 의미합니다. 코드를 작성 후에 테스트 케이스를 구현하는게 아닌 테스트 케이스를 먼저 작성한 후에 이를 통과하는 코드를 추가해 가는 방식의 개발 방법론입니다. TDD는 위의 그림과 같은 개발주기를 가지고 반복적으로 개발을 진행하는데 Red 단계에서는 실패하는 테스트 코드를 작성하고, Green 단계에서는 테스트 코드를 성공시키기 위한 최소한의 코드를 작성합니다. Blue 단계에서는 중복 코드 제거, 일반화 등의 리팩토링을 수행합니다. 간단하게 말하자면 실패하는 경우를 찾고,..

안녕하세요. 천원입니다. RootRIB 설정하는 부분은 공식문서에 없어서 간단하게 정리해두고자 포스팅합니다. 먼저 기존 RIB들과 동일하게 생성해줍니다. 참고로 Owns corresponding view 체크하면 view없이 동작하는 RIB 만들 수 있습니다. SeneDelegate에서 launchRouter로 RootRIB 붙여줍니다. private var launchRouter: LaunchRouting? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { // Use this method to optionally configure ..

안녕하세요. 천원입니다. 다른 분들의 Github 코드를 살펴보다가 재상용성이 좋아보이는 코드가 Adapter 패턴으로 작성되었다는걸 알고 공부해 보고자 정리합니다. Adapter 패턴 현재 특정 기능을 수행하는 인터페이스가 존재하는데 이와 비슷하지만 조금씩 다른 기능을 추가해야할 때 Adapter를 사용해서 사용하는 쪽에서 코드의 변경을 최소화하는 패턴, 코드의 중복을 방지하고 현재 서비스 중인 프로젝트에 대하여 변경을 최소화 할수있습니다. 구현 현재 인증 서비스가 구현되어 있었는데, Google 과 Naver 인증 서비스가 추가되는 시나리오를 구현해 보겠습니다. protocol AuthServiceType { func authenticate(username: String, password: Strin..