본문 바로가기

Develop

(163)
[Tuist] 기존 프로젝트에 Tuist 적용하기 우리가 개발할 때 프로젝트에 있는 .xcdeproj 파일이 브랜치를 변경할 때마다 파일이 충돌하거나, 설정을 잘못 건드려도 프로젝트가 꼬이는 경험이 한번 쯤은 있을 것이다. 나는 개인적으로 진행하고 있던 프로젝트에 Tuist를 적용해보려고 한다. Tuist 란 무엇일까?그렇다면 Tuist란 무엇일까? Tuist는 Xcode 프로젝트 파일을 생성하고 관리해주는 커맨드 라인 도구(CLI) https://docs.tuist.dev/ko/ What is Tuist? | Tuist docs.tuist.dev Tuist를 사용하면 아래와 같이 장점이 있다..xcodeproj를 관리하지 않아도 된다. 대신, Project.swift 라는 Swift 파일에 프로젝트의 구조와 설정을 코드로 정의한다. 그리고 tuist ..
[Combine] ObservableObject, @StateObject, @ObservedObject, @EnvironmentObject SwiftUI는 선언형 UI 프레임워크로, 데이터가 변경되면 뷰가 자동으로 업데이트되는 '데이터 바인딩'이 핵심입니다.String, Int 같은 값 타입(Struct, Enum)은 @State나 @Binding을 사용해 간단히 상태를 관리할 수 있습니다. 아래 포스팅에서 @State와 @Binding에 대한 내용이다. [SwiftUI] Managing user interface state이 문서의 글을 번역하여 글을 작성하였습니다. Managing user interface state | Apple Developer DocumentationEncapsulate view-specific data within your app’s view hierarchy to make your views reusable...
[Swift] for문 역으로 순회방법 코테를 풀다가 갑자기 for문을 역순으로 사용 해야 되는 경우가 생겼는데 문득 갑자기 어떻게 써볼지 몰라 당황하여 정리하기 위해 포스팅한다. 간단하게는 두 가지를 소개하려고 한다. stride(from:to:by:) 함수 사용 stride(from:to:by:) | Apple Developer DocumentationReturns a sequence from a starting value to, but not including, an end value, stepping by the specified amount.developer.apple.com stride(from:to:by:) 또는 stride(from:through:by:) 함수를 사용하여 특정 범위에서 일정한 간격으로 역순으로 반복from은 시..
[AutoLayout] Compression Resistance Priority Compression Resistance Priority Hugging Priority는 뷰가 자기 크기보다 늘어나지 않으려고 하는 우선순위라고 하면은 Compression Resistance Priority는 뷰가 자기 크기보다 줄어들려고 하지 않는 우선순위이다. 값이 높을수록 글자가 잘리거나 압축되는 걸 거부하고 자기 크기를 유지하려고 한다. Hugging Priority는 아래 포스팅을 참고 [AutoLayout] Hugging Priority우리가 UILabel이 두 개인 상황이다.내가 왼쪽 UILabel은 top/leading/trailling을 40씩, 그리고 오른쪽 UILabel 또한 40씩으로 설정해놓았다.그런데 왼쪽 텍스트가 길어져서 위 에러 메세지가 발생하였다.Set hkimkhuna9..
[UIKit] UITableView + Pagination 구현 Pagination Pagination(페이지 매기기) 또는 Paging(페이징) 이란 문서를 전자 페이지 또는 인쇄된 페이지 등 개별 페이지로 나누는 프로세스이다.우리가 사용하는 웹페이지에서 쉽게 Pagination이 구현한 것을 볼 수 있다. 아래 더보기 같은 버튼이 예시 중 하나이다. 이번에는 UIKit과 SwiftUI에서 사용하는 방식을 포스팅 하려 한다. 내가 이번에는 Github API를 사용하여 구현해볼 것이다.아래 API 문서를 참고하자https://docs.github.com/en/rest/users/users?apiVersion=2022-11-28#list-users REST API endpoints for users - GitHub DocsStatus: 200 { "login": "o..
[Combine] Combine (1) - Combine이란? 우리가 컴바인을 알아보기 전에 함수형 반응형 프로그래밍에 대하여 알아보자 반응형 프로그래밍이란?반응형 프로그래밍의 기본 개념은 모든 것이 이벤트이며, 이러한 이벤트는 비동기적으로 발생한다. 이벤트는 이벤트 소스에 의해 전송되며, 관심 있는 루틴에 특정 이벤트를 수신하도록 등록할 수 있다. 대부분의 경우 이러한 이벤트 스트림은 각 subscriber에게 더 유용하게 변환(transformed)한다. CombineCombine은 시간에 따라 값들을 처리하기 위한 선언형 문법 API이다. 아래는 주요 3가지 핵심 개념이다. Publisher값을 시간에 따라 전달하는 객체. completion하거나 error로 종료될 수 있다.ex) URLSession.DataTaskPublisher, Just, Notific..
[Swift] ARC(Automatic Reference Counting) Automatic Reference CountingSwift는 메모리 관리를 위해 Automatic Reference Counting(ARC)라는 시스템을 사용한다. 대부분의 경우, ARC는 Background에서 자동으로 작동하기 때문에 개발자는 직접 메모리 관리에 신경 쓸 필요가 없다. 하지만 ARC가 어떻게 작동하는지 이해하면, 앱의 메모리 사용을 최적화하거나, 참조 순환(reference cycle) 같은 문제를 피하는 데 도움이 된다. 메모리 관리란?컴퓨터의 메모리는 프로그램이 실행되는 동안 데이터를 저장하기 위해 사용된다. Swift에서는 대부분의 값이 struct, enum, class로 정의된다. 이 중에서 struct와 enum은 값 타입(value types) 이므로, 새로운 인스턴스를..
[TDD] TDD와 Unit Test, Test Double TDD개발자라면 한번쯤은 들어봤어 법한 TDD는 'Test Driven Development'의 약자로, 번역하면 테스트 주도 개발이라는 뜻이다.이는 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고, 이를 통과할 수 있는 코드를 추가하는 단계를 반복하여 구현하는 방법이다. TDD에는 3단계 사이클이 존재한다.Red: 실패하는 테스트를 먼저 작성한다.Green: 테스트를 통과시키는 최소한의 구현Refactor: 중복 제거/설계 개선 리펙토링 (테스트는 계속 초록)이 리듬을 짧게 반복하며 기능을 확장한다. iOS에서는 테스트를 하기 위해 XCTest를 사용한다. 자세한 내용은 아래 공식문서를 참고한다. XCTest | Apple Developer DocumentationCr..