[SwiftUI] TCA(The Composable Architecture)이란?
·
SwiftUI/정리
안녕하세요 불망입니다, 이번에 사이드 프로젝트를 진행하게 되었는데 iOS 부분을 모두 혼자 담당하게 되었습니다 이번 프로젝트에서 TCA + Tuist + Combine을 활용하려고 합니다. 직접 사용해보면서 어떤 장점이 있고 어떤 단점이 있는지 알아보려고 합니다. 오늘은 TCA 패턴에 대해 간단하게 서치해봤습니다. 디자인 패턴 코드가 특정 문제를 해결할 때, 정형화된 하나의 규칙을 제안하는 것 아키텍처 패턴 정리된 코드들을 더 추상화된 비즈니스적 문제 해결 관점으로 정리하는 규칙 TCA 패턴 The Composable Architecture을 활용한 아키텍처 패턴에 대해 설명 SwiftUI는 선언형 UI로 구현하는 환경에서 MVVM 패턴이 자주 사용되었습니다. 그 외 비즈니스 로직, 기업의 개발 환경 및..
[SwiftDataStructure&Algorithms] 기본 데이터 구조(세트, 튜플)
·
SwiftUI/정리
세트 선언 세트는 서로 중복되지 않고 unique, nil이 포함되지 않ㅇ느 non-nil 순위를 정의할 수 없는 무순위 컬렉션이다 세트는 형식상 Hashable 프로토콜에 부합, 스위프트의 모든 기본 타입은 기본적으로 Hashable 프로토콜을 따르도록 설계 열거형의 case값 역시 기본적으로 Hashable 프로토콜을 따른다. 세트에는 여러분이 만든 커스텀 타입도 저장할 수 있는데, 이때 Hashable 프로토콜과 Equatable 프로토콜에 부합해야만 함, Hashable은 Equatable을 상속한 프로토콜 순위가 중요치 않은 배열이라면 해당 데이터를 세트로 저장해도 큰 차이가 없으며, 이때는 해당 요소가 서로 중복되지 않도록 해야함 세트는 배열에 비해 매우 효율적이며, 데이터 접근 속도 역시 세..
[SwiftDataStructure&Algorithms] 기본 데이터 구조(배열, 딕셔너리)
·
SwiftUI/정리
스위프트 표준 라이브러리 활용 표준 라이브러리의 개념은 무척 넓고 다양하다 라이브러리에서 정의한 다양한 프로토콜을 적용할 수 있는 버용 구조체와 열거형을 통해 다양한 기능 제공 Array.append() 함수 예시 해당 배열의 저장 내용을 다른 뱅려과 실시간으로 공유하지 않을 경우 알고리즘의 복잡성 $O(1)$만큼 커짐 함수 실행을 위해 해당 배열을 브릿징한 NSArray로 래핑해야 하며, 그렇지 않을 경우 알고리즘의 효율성은 매우 낮아짐 애플이 구조체를 사용하는 이유 객체지향형 언어를 이용해서 프로그래밍을 했다면, 원하는 타입을 만들기 위해 클래스라는 구조 또는 개념을 사용해 왔을 것 하지만 스위프트 표준 라이브러리에서는 이와 같은 용도로 클래스를 사용하지 않음 스위프트에 정의된 타입 대부분은 구조체 ..
[SwiftDataStructure&Algorithms] 데이터 구조
·
SwiftUI/정리
1강 플레이그라운드 살펴보기 데이터 구조의 중요성 효율성 유지 보수성 확장성 데이터 활용을 위한 체계화 방법 (데이터의 공유,유지,정렬,검색 등) 데이터 구조 + 알고리즘 = 프로그램 데이터 추상화(abstraction)기법 데이터가 지닌 복잡성을 관리하기 위한 기술 데이터 구조를 디자인 추상화를 사용하는 이유 내부의 구현방식을 몰라도 되도록 하기 위함, 개발자는 더욱 쉽게 사용할 수 있다. 문제를 해결하기 위한 패턴 스위프트 REPL 스위프트 컴파일러(Read-Eval-Print-Loop) 즉시 코드를 실행하고 결과를 도출 값을 별도로 할당하지 않았을때 REPL이 직접 $R0라는 변수를 생성해서 값을 할당 기본적인 데이터 구조 배열 & 포인터 인접 데이터 구조: 데이터 메모리 영역중 인접한 부분에 저장..
XCODE IOS 프로파일링 디버깅 하는 방법
·
SwiftUI/정리
안녕하세요 불망입니다..! 개발을 하다보면 어플이 멈추거나 강제종료되는 경우가 있습니다..! :( 그 이유로는 메모리 부족이나 누수이거나 교착상태, 경쟁 상태 등 다양한 이유가 있을 수 있습니다. 정확한 원인 분석을 하기 위해서는 프로파일링을 하거나 디버깅을 해야합니다. 메모리 누수나 부족 교착상태 등등을 찾아보려면 프로파일링해보는 것이 제일 정확한 방법입니다. 1. XCODE 프로파일링 XCODE 프로파일링이란 앱 성능 및 리소스 사용을 분석하고 최적화하는 과정을 뜻합니다. 앱이 실행하는 중에 발생하는 이슈에 대해서 모니터링 할 수 있고 메모리누수, 에너지효율성, 메모리할당 과정 등을 전반적으로 훓어볼 수 있습니다. 단순 출력으로는 잡아내기 힘든 성능 이슈나 메모리 부분을 주로 관찰 및 분석합니다. 디..
[SwiftUI] 아키텍처 고민
·
SwiftUI/정리
아키텍처 Toucher 개발을 리펙토링 하면서 제일 먼저 한 고민은 "어떤 아키텍처를 해야하는 것인가,,?" 이었습니다. 일단 저희한테 맞는 아키텍처를 찾으려면 어떠한 아키텍처가 SwiftUI 에서 사용이 되는지 알아봤어야 했기에 간단하게 서치를 해봤습니다. MVC Model-View-Controller 주로 UIkit에서 이용을 합니다. SwiftUI에서는 아래와 같은 이유로 사용을 지양하고 있습니다. SwiftUI는 선언적인 구문을 사용하여 UI를 정의합니다. 원하는 결과를 선언하고 프레임워크가 알아서 상태 및 레이아웃을 관리합니다. SwiftUI는 바인딩(Binding) 및 상태 속성(State Property)과 같은 반응형 프로그래밍 개념을 도입하여 UI 요소를 데이터에 쉽게 바인딩할 수 있습니..