본문 바로가기

반응형

전체 글

(24)
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..
GitHub Repository 소유주 변경하기 개발자, 개인, 프로젝트... 등등등 일과 삶을 분리 한답시고 계정을 엄청 만들었는데.. 결국은 개인적으로 쓰는 메일을 쓰게 되네요.. 다 외우기도 힘들고.. 지금까지 개임 이메일에 ***.dev 라고 개발자용 이메일을 만들었다가 귀찮아서 그냥 다 합쳤어요.. 개발자용 아이디 따로 쓰다보니 github 계정도 다 다르고 해서 그냥 한곳에 다 모았어요.. 그러다 github 저장소를 이전한 경험을 공유해 드립니다. 먼저 저장소 상세로 들어가면 상단에 "Setting" 탭이 있습니다. 설정 화면에서 하단으로 내리면 "위험한 곳(Danger Zone)" 이라고 빨갛게 테두리가 있는 부분이 있는데 그곳에 "Transfer" 라는 버튼이 보입니다. 저장소 이전을 위해서는 이 "Transfer" 메뉴를 이용합니다...
.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..

반응형