[iOS] 팩토리 패턴에 대해서 알아보자
·
카테고리 없음
팩토리 패턴팩토리 메소드 패턴이란?팩토리 메소드 패턴은 객체를 만드는 방법을 인터페이스로 정의하고, 실제로 어떤 객체를 만들지는 서브 클래스가 결정하도록 하는 패턴입니다. 쉽게 말해, "객체 생성을 전담하는 공장"을 만드는 느낌s왜 팩토리 패턴을 사용해야 할까?객체 지향 프로그래밍의 원칙 중 하나는 OCP(Open-Closed Principle) 입니다. 즉, 확장에는 열려있고 수정에는 닫혀야 한다 는 건데,,, 중요한 건 "수정에 닫혀있다" 는 부분입니다.기존 코드를 건드리지 않고도 새로운 기능을 추가할 수 있어야 한다는 말인데, 변경될 가능성이 높은 부분과 안정적인 부분을 분리하는 것이 중요하다는 겁니다객체가 생성되는 부분은 변경될 가능성이 높습니다. 생성자가 바뀌거나, 새로운 타입의 객체가 추가되거..
[iOS] MVI 패턴에 대해서 알아보자
·
카테고리 없음
SwiftUI를 도입하고나서, 기존 MVVM이 맞다 틀리다,, 수많은 논쟁이 있는데요,,https://qiita.com/karamage/items/8a9c76caff187d3eb838 「SwiftUIでMVVMを採用するのは止めよう」と思い至った理由 - Qiita※2022/04/23 追記 本記事の続編として、以下の記事を書きましたので、合わせて御覧ください。 仕事でSwiftUIでTCAを使ってみて、かなり知見がたまったので、その解説です。 MVVMからTCAへの移行qiita.com https://www.reddit.com/r/swift/comments/m60pv7/is_mvvm_an_antipattern_in_swiftui/ From the swift community on Reddit: Is MVVM an anti-patt..
[iOS/Swift] Swift OpenApi Generator
·
카테고리 없음
참고할 WWDC Meet Swift OpenAPI Generator - WWDC23 - Videos - Apple DeveloperDiscover how Swift OpenAPI Generator can help you work with HTTP server APIs whether you're extending an iOS app or writing a server in...developer.apple.com 일단 이 WWDC 내용을 요약하자면,, Swift OpenAPI Generator는 서버 API 작업을 간소화하는 새로운 Swift 패키지 플러그인이다. Swift OpenApi Generator 주요특징필요한 패키지 의존성 추가:swift-openapi-generator (플러그인 제공)swift..
[iOS/Swift] 접근제어자
·
IOS - Swift/UIkit
접근 제어는 캡슐화를 구현하기 위한 가장 기본적인 단계입니다.코드의 세부 구현을 숨기고 필요한 인터페이스만 노출함으로써, 우리는코드의 안정성 향상유지보수성 개선API의 명확성 제공의도하지 않은 사용 방지등의 이점을 얻을수 있습니다! Module의 정의와 특징엥 모듈이 뭐죠? 모듈은 코드 배포의 단위입니다. 하나의 모듈은 독립적으로 배포 가능한 코드의 묶음으로 생각하시면 됩니다.// 다른 모듈에서 이렇게 import하여 사용import UIKit // UIKit 모듈import Foundation // Foundation 모듈import YourCustomFramework // 사용자 정의 모듈모듈은 논리적으로 연관된 기능들의 집합이며, 재사용 가능한 코드의 단위입니다.예를 들면, UIKit은 UI 관련..
[iOS/SwiftUI] @ViewBuilder
·
카테고리 없음
ViewBuilderA custom parameter attribute that constructs views from closures. closure 에서 view를 구성하는 사용자 정의 매개변수 속성입니다. 코드로 바로 예시를 들어보자면!struct ContentView: View { var body: some View { VStack { // 여기서 ViewBuilder가 동작 Text("안녕하세요") Text("반갑습니다") Button("클릭") { print("버튼 클릭됨") } } }}위 코드에서 VStack 내부의 여러 뷰들이 쉼표없이 자연스럽게 나..
[iOS/Combine] Combine - Error Handling
·
IOS - Swift/Combine
Error Handling (챕터 16) - 지훈NeverFailure 타입이 Never인 퍼블리셔는 절대 실패할 수 없다는 것을 나타냅니다.public typealias Failure = Never// Just 등의 publisher에서 사용퍼블리셔가 절대 실패하지 않음을 컴파일 타임에 보장에러 처리 로직이 필요 없음특징간단한 sink 구독 가능 (에러 핸들링 클로저 불필요)Just("Hello") .sink(receiveValue: { print($0) })// 에러 핸들링 없이 값만 처리Never Failure 퍼블리셔들sinkJustEmpty@Published 프로퍼티 래퍼Timer.publish()assign(to:on:)func assign( to keyPath: ReferenceW..
[iOS/Combine] Transforming Operators
·
IOS - Swift/Combine
Transforming Operators의 핵심 개념Transforming operators는 upstream publisher로부터 받은 값들을 변형해서 downstream으로 전달하는 연산자입니다.모든 operator는 publisher이며, upstream 이벤트를 받아서 조작한 후 downstream으로 전달합니다.에러 처리가 필요한 경우가 아니라면 upstream의 에러를 그대로 downstream으로 전달합니다.Mapmap은 업스트림 퍼블리셔의 모든 값의 타입을 변환시키는 Operator입니다.특징map 연산자는 업스트림 퍼블리셔로부터 전달받은 각 요소를 지정된 클로저를 사용해 변환합니다.Swift 문법 map 함수와 비슷하게 동작하고, 한 종류의 데이터를 다른 종류로 변환할 때 사용됩니다.구..
[iOS/SwiftUI] SwiftUI에서 특정부분만 UIkit으로 추출해서 사용하기
·
IOS - Swift/SwiftUI
이번에 스유 공부를 하면서 UIKit을 사용해야하는 경우를 많이 만나보았는데 UIHostingController 과 UIViewRepresentable 을 통해서 사용을 했었는데 말이죠근데 굳이 뷰컨을 새로 만들어서 기능을 끌고오는거보다 부분적으로 바로 사용하면 좋겟다는 생각이 들엇어요!그래서 한번 끄적여봣는데 잘못된 부분이나 질문 환영입니다 viewExtractor하기//// ContentView.swift// extract//// Created by 이지훈 on 12/3/24.//import SwiftUIstruct ContentView: View { var body: some View { VStack { // 시스템 이미지 설정 Imag..
[iOS] UIkit + SwiftUI 둘다 사용하기!
·
IOS - Swift/SwiftUI
이번에 솝커톤을 나가면서 경험했던 UIkit 과 SwiftUI를 둘다 사용해야 했던 상황에서 경험한 멀티모듈 사용법 정리 UIHostingController: UIKit에서 SwiftUI View를 사용하기UIKit 기반 프로젝트에서 SwiftUI 뷰를 호스팅하는 데 사용됩니다.사용 예시:SwiftUI로 만든 특정 뷰를 기존 UIKit 뷰 계층에 삽입할 때.UIKit의 UIViewController나 UINavigationController 위에 SwiftUI 뷰를 추가할 수 있습니다.동작 방식SwiftUI 뷰를 UIKit에서 UIHostingController의 rootView로 설정하면, UIKit에서 SwiftUI 뷰를 렌더링합니다.import UIkitimport SwiftUIprivate fun..