[swift] Tuist 겉핥기
·
swift
Tuist란?Tuist는 Xcode 프로젝트를 코드로 선언하고 자동 생성·관리하는 CLI 도구입니다.대규모 iOS/macOS 프로젝트에서 수작업으로 변경되는 Xcode 설정을 코드로 표준화하여 협업 충돌과 설정 드리프트를 줄이고, 모듈화·의존성 그래프 관리·빌드 파이프라인을 체계화합니다.+) XcodeGen과 다른점: Tuist는 swift로 프로젝트 선언이 가능하지만, XcodeGen은 yaml과 json 기반으로 프로젝트를 선언합니다.Tuist를 사용하는 이유(러닝커브만 보면 소규모 프로젝트에서 사용할 이유가 없어보임)Git을 사용하면서 Xcode 프로젝트 설정(.xcodeproj) 파일의 충돌은 불가피합니다. 이를 개선해줄 수 있는 도구가 바로 Tuist입니다.Tuist를 적용시켜 모듈화를 했을 때..
[swift] 위치 권한 설정
·
swift
swift로 앱을 만들다보면 사용자의 위치를 획득해야하는 경우가 생긴다. CoreLocation 라이브러리로 열심히 코드를 작성하고 실행을 돌리는 순간..!!...(아무일도 일어나지 않았다)당연하다. 우린 사용자에게 권한을 요청한 적이 없기 때문이다.그럼 위치 권한은 어떻게 요청하냐?? info.plist현재 위치 사용에 대한 동의에 관련한 내용을 작성한다.Privacy - Location Always Usage Description (위치를 항상 허용)Privacy - Location When In Use Usage Description (위치를 사용할 때만 허용)Privacy - Location Always and When In Use Usage Description (위치를 사용할 때와 항상 허용)..
[swift] RxSwift란?
·
swift
RxSwift를 알기 전에 먼저 Reactive Programming을 알아야 한다. Reactive Programming이란?Reactive Programming이란 비동기적 데이터 흐름과 전달에 관한 프로그래밍 패러다임이다.이러한 Reactive Programming의 핵심은 모든 것을 비동기적 데이터의 Stream으로 간주하고, 다양한 방법을 통해 이러한 비동기 이벤트를 처리하는 것이다. RxSwift란?RxSwift란 Reactive Extension + Swift의 약자로 비동기 프로그래밍을 관찰 가능한 순차적 형태와 함수 형태의 연산자를 통해 처리하게끔 도와준다. RxSwift를 사용하는 이유Reactive Programming된 API를 제공하기 때문에 명확하고 명시적으로 비동기 데이터를 ..
[swift] ARC
·
swift
ARC란?Automatic Reference Counting의 약자로, 앱의 메모리 사용을 추적하고 관리해주는 기능이다. 클래스가 새로운 인스턴스를 할당하게 되면 ARC는 인스턴스 정보를 저장할 메모리를 할당하고 참조 카운트를 증가시킨다. 그 후 인스턴스의 참조가 해제되면 참조카운트를 감소시키고 더이상 필요하지 않은 상태가 되면 참조카운트가 0이 되어 자동으로 메모리에서 해제가 된다. ARC에서 발생할 수 있는 문제순환 참조 순환 참조를 해결하기 위한 방법Reference Count 계산에 포함되지 않는 unowned 나 weak를 사용한다.메모리에 없는 객체를 참조하게 되면 unowned는 crash가 나고, weak는 nil을 반환한다.하지만, 약한 참조를 사용하여 객체의 수명이 종료되는 동안 수명..
[swift] URLSession
·
swift
URLSessionURLSession은 애플에서 HTTP 통신을 위해 만든 것으로 특정 URL을 이용해서 데이터를 다운로드하고 업로드하기 위해 사용하는 API이다. URLSession의 종료기본 세션 : URLSession(configuration: .default)기본 세션은 일반적인 네트워크 요청을 수행하는 데 사용된다.기본적으로 디스크 기반의 캐시 및 쿠키를 지원한다.쿠키, 인증 정보 등을 자동으로 관리하고 유지한다.앱의 메모리에 캐시된 데이터는 자동으로 디스크에 기록된다.기본적으로 세션이 지속되지 않는데, 세션을 종료하면 쿠키와 캐시가 삭제된다.임시 세션 : URLSession(configuration: .ephemeral)임시 세션은 일회성 네트워크 요청에 사용된다.캐시, 쿠키, 자격 증명 등을..
[swift] Combine
·
swift
Combine Combine은 비동기 및 이벤트 기반 코드를 처리하기 위한 프레임워크로, Publisher-Subscriber 패턴을 기반으로 한다. Publisher 프로토콜은 시간이 지남에 따라 일련의 값을 전달할 수 있는 유형을 선언한다. 퍼블리셔에는 업스트림 퍼블리셔로부터 받은 값에 대해 작업하고 다시 퍼블리시하는 오퍼레이터가 있다. 퍼블리셔 체인의 끝에서 Subscriber는 요소를 수신할 때 해당 요소에 대해 작업을 수행한다. 퍼블리셔는 구독자가 명시적으로 요청하는 겨웅에만 값을 내보낸다. Publisher protocol Publisher { associatedtype Output associatedtype Failure: Error func subscriber(_ subscriber: S)..
[swift] File Manager
·
swift
File Manager FileManager 클래스는 파일 시스템에 대한 접근을 제공하여 파일 및 디렉토리를 관리하는 데 사용된다. 이 클래스는 파일 및 디렉토리를 생성, 복사, 이동, 삭제하고 파일 내용을 읽고 쓰는 등의 작업을 수행할 수 있다. FileManager는 Foundation 프레임워크에 포함되어 있다. File Manager 사용하기 1. 경로 접근 fileManager라는 이름을 가진 인스턴스를 생성한다. fileManager.urls의 for는 폴더를 정해주는 요소이다. in은 제한을 걸어주는 요소이다. let fileManager = FileManager.default let documentURL = fileManager.urls(for: .documentDirectory, in: ..
[swift] UNUserNotificationCenter
·
swift
UNUserNotificationCenter UNUserNotificationCenter 클래스는 iOS에서 로컬 및 원격 알림을 관리하는 클래스이다. 이 클래스를 사용하여 알림을 생성, 수정, 삭제하고, 사용자의 알림 설정을 관리할 수 있다. 알림 권한 요청 기본적으로 앱에서 nofitication이 오게 되면 백그라운드에서 push알림이 오기 때문에 delegate을 채택해줘야 한다. // AppDelegate func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // foreground에서도 notif..
[swift] UserDefaults
·
swift
UserDefaults 앱을 실행하는 동안 지속적으로 key-value 쌍을 저장하는 사용자의 기본 데이터베이스에 대한 인터페이스이다. - Apple Developer Document - UserDefaults는 간단한 설정 값이나 기본 설정과 같은 작은 데이터를 저장하기 위한 인터페이스이다. 주로 앱의 사용자 설정, 앱 상태, 사용자가 설정한 환경 변수 등을 저장하는 데 사용된다. UserDefaults는 앱의 설정 파일이나 데이터베이스와 달리 파일 시스템에 저장되지 않고, 메모리 내에 유지된다. 따라서 작은 양의 데이터를 저장하는 데 적합하며, 주로 앱의 생명주기 동안 지속되는 값을 저장하는 데 사용된다. UserDefaults 사용 방법 1 .UserDefaults 객체 생성 : UserDefaul..
[swift] 데이터 저장 방식
·
swift
데이터 저장 방식 iOS에서 앱의 데이터를 저장하는 방식은 여러가지가 있다. 오늘은 종류에 대해서만 적어보고 나머지는 자세히 다뤄보겠다. UserDefaults UserDefault는 간단한 값(key-value pairs)을 저장하기 위한 인터페이스이다. 일반적으로 앱의 설정, 사용자 기본 설정 및 작은 데이터를 저장하는 데 사용된다. 사용자가 앱을 삭제하거나 업데이트할 때 삭제되지 않는다는 점이 특징이다. 주로 간단한 설정 값, 사용자 기본 설정 및 앱 상태를 저장하는 데 사용된다. KeyChain KeyChain은 보안 정보(예: 사용자의 로그인 자격 증명, 토큰 등)를 안전하게 저장하는 데 사용된다. 데이터는 암호화되어 저장되어 외부로부터 보호된다. 사용자가 앱을 삭제해도 KeyChain에 저장된..