본문 바로가기

반응형

iOS

(14)
iOS Keychain 사용 방법과 예제 소개 iOS 앱에서 민감한 정보를 안전하게 저장하려면 Keychain을 사용하는 것이 좋습니다. Keychain은 iOS 시스템에서 제공하는 안전한 저장소로, 패스워드, 토큰, 인증 정보 등을 안전하게 보관할 수 있습니다. 이번 포스트에서는 iOS Keychain의 사용 방법과 예제 코드를 소개합니다. Keychain 사용 방법 : 1. Security.framework 추가 먼저 프로젝트에 `Security.framework`을 추가해야 합니다. 이 프레임워크는 Keychain에 접근할 수 있는 메서드를 제공합니다. 2. KeychainWrapper 클래스 생성 Keychain 접근을 간편하게 하기 위해 `KeychainWrapper` 클래스를 생성합니다. 이 클래스는 Keychain에 값을 저장하고 ..
Cancellables in Combine Combine에서 "cancellable"은 퍼블리셔에 대한 구독을 관리 및 종료하여 메모리 누수를 방지하고 데이터 흐름을 제어할 수 있는 개체입니다. 예제: import Combine // 값을 내보내는 간단한 퍼블리셔 생성 let publisher = Just("Hello, Combine!") // 퍼블리셔를 구독하고 취소 가능한 항목을 저장합니다. let cancellable = publisher.sink { value in print(value) } // 나중에 구독이 더 이상 필요하지 않으면 취소. cancellable.cancel() Publisher 생성: 이 예에서는 Just 를 사용하여 publicher라는 Publisher를 생성합니다. 이 Publish는 단일 값(이 경우 "Hello..
API Calls with Combine iOS 앱 개발에서는 API 호출과 같은 비동기 작업을 처리하는 것이 일반적인 요구 사항입니다.지금까지 개발자는 콜백이나 완료 핸들러를 사용하여 이러한 작업을 관리했습니다. 그러나 iOS 13에 Combine이 도입되면서 비동기 작업을 처리하기 좋은 방법이 생겼습니다. Combine 프레임워크는 시간이 지남에 따라 값을 처리하기 위한 선언적 Swift API를 제공합니다. 그리고 Combine 프레임워크는 비동기 데이터 스트림으로 작업할 수 있으므로 API 호출 처리에 적합합니다. 이번글에서는 iOS에서 Combine을 사용하여 API 호출하는 방법을 살펴보겠습니다. Combine 사용 방법 Combine은 iOS에 내장된 프레임워크이므로 외부 종속성을 추가할 필요가 없습니다. 기본적으로 Combine..
TabView and NavigationLink SwiftUI는 iOS, macOS, watchOS 및 tvOS용 사용자 인터페이스를 구축하기 위한 선언적 프레임워크입니다. SwiftUI는 앱에서 복잡한 탐색 패턴을 쉽게 생성할 수 있는 여러 가지 보기와 수정자를 제공합니다. 오늘은 TabView와 NavigationLink라는 두 가지를 살펴보겠습니다. TabView TabView는 화면 하단에 탭 막대를 표시되며, 사용자가 탭바의 아이텝을 탭하여 다른 보기 간에 전환할 수 있도록 합니다. TabView는 홈, 설정, 즐겨찾기 등과 같은 다양한 섹션이나 카테고리로 앱을 구성하는 데 유용합니다. TabView를 생성하는 예제: struct ContentView: View { @State private var selection: Int = 0 var ..
Static VS Final Swift에서 static 및 final은 속성, 메서드 및 클래스의 동작과 액세스를 제어하기 위해 서로 다른 컨텍스트에서 사용되는 두 개의 키워드입니다. 예제와 사용 사례를 통해 각각을 살펴보겠습니다. Static static 키워드는 클래스나 구조체의 인스턴스가 아닌 클래스나 구조체 자체에 속하는 속성과 메서드를 정의하는 데 사용됩니다. 인스턴스가 없어도 클래스 또는 구조체 이름을 사용하여 액세스할 수 있습니다. 정적 속성 및 메서드의 예: class SampleClass { static var staticValue: Int = 10 static func staticFunction() { print("This is a static function") } } // static 속성과 함수에 접근하는 방..
멀티스레딩(MultiThreading) 멀티스레딩 멀티스레딩은 앱의 성능을 향샹기키고 사용자 경험을 향상기키는 중요한 측면입니다. 멀티스레딩은 앱이 동시에 여러 작업을 수행할 수 있도록 하며, 주로 비동기적으로 실행되는 코드를 관리 하고 데이터를 병렬로 처리하는데 사용합니다. 멀티스레딩 이점 성능 향상 : 멀티스레딩을 사용하면 앱이 여러 작업을 동시에 수행할 수 있어, 실행 속도가 향상됩니다. 응답성 향상 : 비동기 프로그래밍을 통해 UI를 차당하지 않고 긴 작업을 수행할 수 있으므로, 사용자가 앱을 더 자주 사용할 수 있게 됩니다. 자원 효율 : 멀티스레딩은 CPU 자원을 최대한 활용하여 더 많은 작업을 빠르게 처리할 수 있게 합니다. 멀티스레딩 단점 동기화 문제 : 여러 스레드가 동시에 데이터에 접근할 때, 적절한 동기화 없이는 경쟁 조건..
@propertyWrapper 활용 예제 1 오늘은 간단히 @propertyWarpper을 활용하는 방법을 알아 보겠습니다. Swift 에서 class, structure, enum의 속성에 래퍼를 적용하면, 래퍼 형식의 인스턴스를 통해서 속성에 대한 액서스가 래핑 되며, 래퍼는 노출된 속성에 대한 getter 및 setter인 WrappedValue를 정의해야 합니다. 아래 예제는 들어오는 문자열 값에서 공백과 줄바꾼을 제거합니다. @propertyWrapper struct WhitespaceTrim { private(set) var value: String = "" var wrappedValue: String { get { value } set { value = newValue.trimmingCharacters(in: .whitespacesAn..
.simultaneousGesture() to handle multiple gestures on a single view (한 뷰에서 멀티 제스쳐 하기!!!) 안녕하세요~ 오늘은 간단하게 한 뷰에서 두가지 제스쳐를 받아서 따로 처리하는 방법을 살펴 보려고 합니다. 동일한 뷰에서 두가지 제스쳐를 받기 위해서는 .simultaneousGesture()를 사용하면 간편하게 적용을 하실 수 있습니다. 우선 간단하게 어떤 뷰에서 제스쳐를 받을 때 다음과 같이 사용을 하면됩니다. struct SimpleGestureExample: View { @State private var isDoubleTapped: Bool = false var body: some View { Circle() .fill(isDoubleTapped ? .blue : .red) .frame(width: 200, height: 200) .gesture( TapGesture() .onEnded { isDo..

반응형