스위프트
-
[iOS] SwiftUI, TCA 모듈화 그리고 RIBs스위프트 2024. 5. 5. 00:34
개요최근에 SwiftUI와 TCA 조합으로 개인 프로젝트를 진행하고 있습니다.사내 새로운 서비스도 TCA를 사용할 것 같은데 아마 설계까지 해야 할 것 같습니다.그런데 TCA로 제대로된 모듈화가 너무 어렵더라고요..이에 대한 트러블 슈팅과 생각 정리를 좀 해봤습니다. 🚨 TCA에 대해 깊게 알고 작성한 글이 아니므로 잘 걸러서 들어주세요! 🚨다른 좋은 방법이 있다면 말씀해 주시면 조언 부탁드리겠습니다. 🙇🏻🙇🏻♂️🙇🏻🙇🏻♂️ SwiftUI, 모듈화가 어려운 이유SwiftUI의 장점은 너무 많습니다.일단 선언형이라 직관적이며 UIKit에 비해 적은 코드로 UI를 그릴 수 있고 등등... 아주 많습니다. 그러나 제 생각에는 단점도 꽤나 치명적입니다. 바로 View에서 내비게이션(라우..
-
[iOS] ViewController 테스트 작성하기스위프트 2024. 1. 28. 16:40
보통 테스트를 할 때 비즈니스 로직만 테스트를 하고 ViewController(UI)에 대한 테스트 작성은 미흡합니다. 왜 테스트가 미흡했고 어떻게 테스트를 작성할 수 있는지에 대해 알아봅시다. 테스트하기 어려운 이유 - 객체지향프로그래밍 전에 객체지향프로그래밍(OOP)에 대해 글을 작성했습니다. 2023.08.13 - [객체지향프로그래밍] - [OOP] 객체지향프로그래밍 기초 [OOP] 객체지향프로그래밍 기초 OOP의 개념 객체지향 프로그래밍 (Object Oriented Programming)은 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호 hogumachu.tistory.com ViewController를 ..
-
[iOS] 테스트를 작성해야 하는 이유스위프트 2024. 1. 21. 18:43
최근 면접을 보는데 테스트 코드를 작성해야 하는 이유에 대해 질문이 들어왔다. 단순히 내가 작성한 코드가 안전하다는 것을 보장한다는 답을 했다. 그런데 이후에 꼬리 질문이 들어오니 면접관의 질문과 답변에 털리고 왔다. 테스트 코드를 작성하지 않아야 하는 상황? 반대로 생각을 해보기로 했다. 일단 2가지 정도를 생각했는데 유지 보수를 전혀 하지 않을 생각일 때 기억력이 굉장해서 기존 코드를 수정할 때 어디에서 어떤 결과가 나올지 알고 있을 때 2번 케이스는 잘 없을 것 같고.. 생각보다 1번 케이스는 많다. 짧은 기간동안 하는 프로젝트 경우에는 테스트 코드를 작성하는 것보다 빠르게 기능 개발을 우선으로 했다. 스타트업에서 재직할 때는 위 상황과는 달랐다. 기존에 추가한 기능이 유지될 가능성이 굉장히 낮았다..
-
[iOS] 모듈화를 해야 하는 이유스위프트 2024. 1. 14. 16:50
개발을 하면서 왜 모듈화를 해야 하는지에 대한 개인적인 이유입니다. 다른 의견 있으시면 댓글 달아주시면 감사하겠습니다! 🙇🏻♂️🙇🏻 캡슐화 먼저 캡슐화에 대한 이야기를 하려고 합니다. 2023.08.13 - [객체지향프로그래밍] - [OOP] 객체지향프로그래밍 기초 [OOP] 객체지향프로그래밍 기초 OOP의 개념 객체지향 프로그래밍 (Object Oriented Programming)은 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호 hogumachu.tistory.com 캡슐화에 대한 자세한 내용은 위에 링크를 참조해 주세요. 모듈 수준에서도 캡슐화가 진행되어야 한다고 생각합니다. 만약 진행하지 않는다면 외부에..
-
[iOS] ViewController Life Cycle (+ ViewIsAppearing)스위프트 2023. 9. 2. 16:58
Overview ViewController에 새로운 viewIsAppearing(_:) 메소드가 추가되었습니다. 새로워진 ViewController의 생명 주기와 레이아웃은 어떤 방식으로 설정이 되는 지 알아봅시다. ViewController Life Cycle ViewController에도 생명 주기가 있습니다. 메모리에 적재되어 레이아웃을 잡고 사용자에게 시각적으로 보입니다. 그리고 더이상 필요 없다면 사라집니다. init 잘 알고 있는 객체의 init 메소드입니다. 가장 먼저 호출이 됩니다. loadView ViewController가 관리하는 View를 만드는 메소드입니다. View를 로드하거나 생성하여 View Property에 할당합니다. 애플 문서에 따르면 해당 메소드는 직접 호출하지 말라고..
-
[iOS] RxSwift를 이용하여 키보드 컨트롤하기 (NotificationCenter)스위프트 2023. 8. 22. 14:28
Overview 앱 개발을 하면 키보드에 따른 UI 변경을 해야 하는 상황을 마주합니다. 전에 RxKeyBoard라는 라이브러리 사용법을 소개한 적이 있습니다. (https://hogumachu.tistory.com/14) 이번에는 RxSwift만을 사용해서 컨트롤해 봅시다. 키보드 show/hide 예시 영상 RxSwift 없이 사용하는 방법 @objc private func keyboardWillShow(notification: NSNotification) { guard let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue else { return } prin..
-
[Swift] 티스토리 블로그를 자동으로 Github에 업데이트 (Git Actions)스위프트 2023. 8. 7. 18:22
Overview Swift를 통해 Tistory 글을 긁어와 깃허브에 자동으로 업데이트해봅시다. 아래는 이미지는 결과물입니다. 따라 하기 귀찮다면 https://github.com/hogumachu/hogumachu 의 main.swift 파일과 /.github/workflows/main.yml 을 보고 수정하시면 됩니다. RSS 긁어오기 자신의 블로그 주소 + RSS를 입력하면 정보를 가져올 수 있습니다. 저의 경우 https://hogumachu.tistory.com/rss 를 통해 값을 가져왔습니다. func load(url urlString: String) { guard let url = URL(string: urlString) else { return } URLSession.shared.data..
-
[iOS] Life Cycle (App, Scene 생명 주기)스위프트 2023. 7. 30. 17:37
Overview 앱에는 생명주기가 있습니다. 앱이 열리고, 실행되고 그리고 백그라운드가 되고 종료가 됩니다. 앱이 Foreground 상태에가 당연히 Background 상태보다 리소스를 많이 사용하겠죠? iOS는 13버전 전과 후로 생명 주기에 변화가 있습니다. iOS 13 이전, 앱은 하나의 화면만을 책임졌습니다. UIApplicationDelegate를 통해 생명 주기 이벤트를 다뤘습니다. iOS 13 그리고 그 이후, 앱은 하나의 화면이 아닌 여러 화면을 다뤄야 했습니다. UISceneDelegate를 통해 생명 주기 이벤트를 다뤘습니다. App State 앱은 각각의 상태가 있습니다. 위에서 언급한 것 처럼 실행, 종료 등 상태가 있습니다. App State 설명 Not Running 앱이(사용..