본문 바로가기

iOS45

iOS) Push Notification Flow (feat. APNs) iOS Push 흐름도정의 Push (or Remote Notification)서버에서 디바이스로 알람을 전달하는 방법특징 iOS의 경우 Push 기능을 구현하려면 무조건 APNs를 거쳐야 한다.APNs (Apple Push Notification service) 개별 디바이스로 직접적으로 푸시 알림을 보낼수 있는 주체 (provided by Apple) 참고 자료Registering your app with APNs | Apple DeveloperNotification Overview | Apple Developer 2024. 5. 8.
RxSwift) Hot Observables vs Cold Observables 머리말Observables의 특징 따른 구분 (Hot vs Cold)RxSwift의 Observables의 특징을 구분하여 설명할 때 흔히 Hot과 Cold로 구분하여 이를 다룬다. 아메리카노도 아니고 무슨 Hot과 Cold가...이를 한번 비교해 보자.본문구분의 핵심시퀀스에 대한 방출 시점 (→ 자원의 사용 여부)Observable이 Hot인지 Cold인지 이를 구분하는 핵심은 아래와 같다.Observable이 아이템에 대한 시퀀스를 언제 방출하는가?여기서 짐작할 수 있는 따뜻하냐 차갑냐의 차이는, 이벤트의 방출은 곧 자원의 사용 (이벤트의 방출 → 열을 발생시킨다)의 여부 에서 착안한 것 같다.공식 문서에서도 Use resources ("produce heat") 라 설명되어 있다. .. 2024. 4. 17.
Swift) inout 파라미터 머리말 Swift는 다른 언어와 다르게 함수의 파라미터가 상수여서 파라미터의 값을 변경하려면 "inout"이라는 키워드를 사용해야 한다. 우리말로 하면 "출입"이라는 키워드일텐데 도대체 이 키워드는 무엇인지 살펴 보자. 본문 공식문서의 inout 한번 공식문서에서 inout을 살펴 보자 In-Out Parameters in Functions You write an in-out parameter by placing the inout keyword right before a parameter’s type. An in-out parameter has a value that’s passed in to the function, is modified by the function, and is passed back .. 2024. 4. 10.
iOS 앱의 생명 주기 (App Life Cycle) Intro 앱의 생명 주기(App Life Cycle)란? 앱의 생명 주기는 어떠한 앱이 최초로 실행된 이후부터 해당 애플리케이션이 메모리에서 해제되어 종료되기까지의 상태와 상태 간의 이동을 의미한다. 앱 생명주기의 변화점 iOS 13.0+ & iPadOS의 스플릿 뷰 기존에는 한번에 하나의 화면만 보여주던 게 당연했지만, 아이패드에서 최소 두 개 이상의 앱을 하나의 화면에서 보여주어야 할 필요성이 생겼다. 그것이 바로 스플릿 뷰의 등장이다. App Delegate → Scene Delegate iOS 12 이전까지는 UIApplicationDelegate 객체를 통해 Life Cycle Event에 대응했지만, iOS 13 이후부터는 UISceneDelegate 객체를 통해 Life Cycle Even.. 2024. 3. 27.
Swift에서타입에 상관없이 코드를 작성할 수 없을까? (feat. Swift Generics) 목차 I. 머리말 들어가기 전에 개발자 앤디는 두 요소를 바꾸는 함수를 작성하기 위해 아래와 같이 코드를 작성하였다. 코드 func swapTwoStrings(_ a: inout String, _ b: inout String) { let temporaryA = a a = b b = temporaryA } func swapTwoDoubles(_ a: inout Double, _ b: inout Double) { let temporaryA = a a = b b = temporaryA } 하지만, 앤디는 이렇게 작성하면서 의문점이 들었다. 어차피 두 요소를 바꾸는 함수인데, 하나의 함수로 정의할 수는 없을까? 함수의 중복 동일한 기능을 수행하는 여러 개의 함수 앤디는 타입에 상관없이 함수를 하나로 묶고 싶다... 2024. 1. 2.
Swift) 프로토콜과 의존성 주입, 의존성 분리 원칙 (feat. DI & DIP) 목차 I. 머리말 (0) 요약 📝 4개의 주제표 아래와 같이 요약할 수 있다. 긴 글을 읽기 전에 일단 살펴 보고 가자. 용어 정의 문제 의존 관계 발생 1. 하위 모듈의 인스턴스를 상위 모듈 내부에 직접 생성할 경우 발생 2. 하위 모듈이 변경될 때마다 상위 모듈 또한 매번 대응해야 함 해결책 의존성 분리 1. Swift의 인터페이스인 프로토콜(Protocol)을 이용한 추상화 진행 2. 정의한 프로토콜을 실제 모듈에 채택하여 요구사항을 준수하도록 요구 수단 의존성 주입 (Dependency Injection) 1. 하위 모듈의 인스턴스를 외부에서 생성 2. 상위 모듈 내부에는 프로토콜을 프로퍼티로 정의하고 생성자를 통해 프로퍼티를 생성 원칙 의존성 역전 원칙 (DIP; Dependency Invers.. 2023. 12. 12.
SwiftUI) @ViewBuilder를 왜 쓸까 (feat. Property Wrapper) 머리말 결론 (애플이 아닌) 직접 만든 코드에는 하위 뷰를 담을 수 있게 하는 로직이 들어가 있지 않기 때문에 - `View` 프로토콜의 `body` 프로퍼티와 SwiftUI에 내장된 구조체에는 이미 `@ViewBuilder`가 구현되어 있어서 아무런 의심 없이 굳이 `@ViewBuilder` 프로퍼티 래퍼를 감싸지 않아도 된다. - 하지만 직접 프로퍼티를 만들거나 구조체를 만들어서 이를 child view로 넣고 싶다면, `@ViewBuilder`를 활용해야 한다. - Custom 구조체를 구현할 때 이니셜라이저에 `@ViewBuilder`를 넣어야 한다. 왜 Custom Wrapper의 이니셜라이저에 `@ViewBuilder`가 들어가는가 강의 시간에 커스텀 Wrapper를 이용하여 SwiftUI의.. 2023. 11. 23.
SwiftUI) "@State"로 구조체의 프로퍼티를 변경하기 (feat. 프로퍼티 래퍼; Property Wrappers) 목차 개념 @State를 왜 쓰는가? 구조체 안에서 프로퍼티 값을 변경하기 위해 struct 기반의 SwiftUI에서 인스턴스는 immutable 하기 때문에 @State 이전 @State 이후 정의 A property wrapper type that can read and write a value managed by SwiftUI. SwiftUI에 의해 관리되는 값을 읽고 쓸 수 있게 가능하는 프로퍼티 래퍼의 타입 중 하나 State | Apple Developer Documentation 프로퍼티 래퍼(Property Wrapper)? 프로퍼티를 감싸는 "포장지" A property wrapper adds a layer of separation between code that manages how a.. 2023. 11. 14.
Swift) static member cannot be used on instance of type 오류 (feat. 중첩한 타입) 요약 내용 상황 구조체와 클래스의 중첩된 타입(Nested Types) 상태에서, 인스턴스 멤버로 구조체/클래스 타입을 접근 시 static member 오류 접근 발생 원인 정적인 멤버(static member)는 인스턴스 멤버(instance member)로는 접근이 불가능하다 해결 중첩한 타입을 접근하려면 타입의 이름을 통해 접근해야 한다. 알게 된 내용 구조체와 클래스는 모두 "(커스텀) 타입"이다 타입은 정적 멤버(static member)이다. 중첩된 타입(nested types)을 접근하기 위해서, 바깥에 위치한 타입은 이름으로 접근해야 한다. 머리말 프로젝트의 MVVM 패턴 적용 프로젝트에서 ViewModel Input, Output 구조체를 ViewController에서 적용할 때 의문이.. 2023. 11. 9.
MVVM) Input-Output 패턴 적용하기 (feat. RxSwift) 머리말 요약 수업 시간에 배운 내용의 흐름을 위와 같이 정리해 보았다 (클릭하면 더 자세히 볼 수 있습니다) 본문 종류와 역할 및 특징 종류 역할 및 특징 View / ViewController 1. UI를 구성 2. 이벤트를 감지하여 ViewModel에 입력값으로 전달 3. ViewModel이 전달한 출력값을 화면에 띄움 Input View/ViewController의 이벤트를 감지하여 ViewModel에 보낼 데이터 ViewModel 1. UI 로직과 비즈니스 로직의 분리 2. MVC 패턴에서 과도한 기능을 분리 Output ViewModel에서 가공하여 View/ViewController에 표현할 데이터 bind 1. View/ViewController의 클래스 메서드 2. 나머지 요소 (View .. 2023. 11. 8.
반응형