iOS 43

왜 UI 처리는 MainThread 에서 처리하는가?

나는 이 질문에 대해서 딱히 생각해본적이 없었다..! 마치 그냥 밥 먹으면 이닦아야징 하는 것처럼 + 엄마가 자꾸 밥 먹으면 이닦으라 하듯이 알아서 XCode 에서 알려주니까(으휴ㅠ 으휴!) 공부하는 내용을 공유하는 시간이 있었는데, 이때 받은 질문 덕분에 어? 그러네.. 왜 밥 먹고 이 닦는 거지? 라는 생각이 그제야 든 것이다. 나는 생각해보다가GUI 처리 - 렌더링이 필요하다 + 애니메이션도 있지... + GPU를 처리해야한다 이런 생각에UI 처리 자체가 너무 무거워서..? 라고 생각했다. 완전 정반대였다. UI 처리라는 것 자체는 무거운 처리가 아니다.내가 생각하는 렌더링, 애니메이션 처리는 다른 곳에서 하고 있다.Render Server라는 별도의 프로세스에서 처리된다는 것.. 좀 더 정..

iOS/SwiftUI 2025.08.20

[watchOS] 애플워치 개발자 모드 설정 뜨게 하는 방법

아주 쉬운 수순은 이 방법이라고 하는데, 이 이후에애플워치에서 설정 > 개인정보 보호 및 보안 > 개발자 모드 까지만 설정하면 바로 연결이 된다고 한다. 그 이후에는 XCode 에 이 창을 보며 기다리기만 하면 된다. 이 방법은 모두에게 적용되지 않을 것이다. 아주 쉽게 애플워치에 개발자모드가 뜨는 사람들이 있는가하면, 나처럼 고생하는 사람도 분명 있을 것 같아서 기록해본다. 기존에 이미 아이폰으로 개발자모드를 쓰고 있었다던가 하는 이유인지 아직까지 잘 모르겠다, 아무튼!!! 내 방법이 백퍼 맞는 방법이 아니니까,혹시 돌고돌고돌고 돌다가 이 글을 보고 계신 분이라면 내 방법으로 개발자모드 뜨는게 꼭 되시길 바라면서!!! 일단 애플 디벨로퍼 프로그램 없으신분..?애플 디벨로퍼 프로그램부터..

iOS/App 2025.07.13

[HealthKit] HKObserverQueryCompletionHandler

https://delightpip.tistory.com/390 [HealthKit] enableBackgroundDeliveryHealthKit Capabilities Entitlementcom.apple.developer.healthkit.access 앱이 포그라운드/백그라운드 상태로 실행되면, HealthKit은 해당하는 HKObserverQuery의 핸들러를 즉시 실행시킨다. 백그라운드에서도 작동하려면delightpip.tistory.com 백그라운드 전달에 사용되는 completion handle typealias HKObserverQueryCompletionHandler = () -> Void 이 completion handler는 백그라운드 전달에 응답할 때 호출해야 하는 클로저를 정..

iOS/Swift 2025.07.11

[HealthKit] enableBackgroundDelivery

HealthKit Capabilities Entitlementcom.apple.developer.healthkit.access 앱이 포그라운드/백그라운드 상태로 실행되면, HealthKit은 해당하는 HKObserverQuery의 핸들러를 즉시 실행시킨다. 백그라운드에서도 작동하려면, 앱 실행 시점에 observer query를 등록해야 한다.보통 AppDelegate나 SceneDelegate의 앱 초기화 지점에서 설정해야 백그라운드 전달이 제대로 작동한다AppDelegate의 application(_:didFinishLaunchingWithOptions:)에서 설정쿼리가 등록되어 있지 않으면, HealthKit이 데이터를 보내도 앱이 무시하니까 주의HKObserverQuery 안에서 제공되는 com..

iOS/Swift 2025.07.09

[Foundation/Class] NotificationCenter

NotificationCenter 란?객체 간 느슨한 통신(loose coupling)을 가능하게 하는 event broadcast system다수의 객체에 이벤트 상태변화를 알리는 방송이라고 생각하면 됨단일 프로그램 내에서만 동작 (프로세스 간 통신은 DistributedNotificationCenter 사용)Notification 이란?NotificationCenter가 전달하는 단일 이벤트의 데이터 단위앱 내부의 객체 간 메시지를 전달하는 역할로, 옵저버 패턴의 일부이다.[!NOTE] Notification과 User Notification(UNNotification)은 다른 개념임.NotificationCenter의 내부구조 swiftclass NotificationCenter { priva..

iOS/Swift 2025.07.02

[문법/키워드] Computed Property / Extension

1. Computed Property (계산 속성)속성처럼 보이지만, 내부적으로 계산해서 값을 반환함.보통 다른 속성을 기반으로 동작get, set 블럭 사용 가능.저장공간을 갖지 않음 (값을 "가지고 있는" 게 아니라 "계산"함)읽기 전용도 가능, 읽기/쓰기 모두 가능. struct 안에 있는 값을 활용하여 어떤 계산식을 통해 값을 리턴시켜줌. struct Circle { var radius: Double // 계산 속성 (읽기 전용) var area: Double { return .pi * radius * radius } // 계산 속성 (읽기 & 쓰기) var diameter: Double { get { re..

iOS/Swift 2025.05.21

[문법/키워드] mutating, Associated Value (연관 값)

1. mutatingmutating 키워드는 구조체(struct)나 열거형(enum)에서 인스턴스 자신의 속성을 변경하고자 할 때 사용한다.클래스(class)는 참조 타입이라서 메서드 내에서 속성 수정이 자유롭지만,구조체/열거형은 값 타입이라 기본적으로 메서드 내에서 속성 변경이 금지됩니다.이를 허용하기 위해 mutating 키워드를 사용합니다. struct Counter { var count = 0 mutating func increment() { count += 1 }}var c = Counter()c.increment()print(c.count) // 1 2. Associated Value (연관값) 열거형(enum) 에서 각 case에 값을 함께 저장하고 싶을 때 ..

iOS/Swift 2025.05.20

Swift에서 closure 함수 쓸 때 사용되는 @escaping 은 뭘까?

@escaping 키워드는 Swift에서 클로저가 함수의 생명 주기 밖에서도 사용될 수 있을 때 사용한다.클로저가 함수가 반환된 후에도 실행될 수 있다면, 해당 클로저 파라미터에 @escaping을 붙여야 한다.보통 비동기 작업에서 자주 사용된다. 예를 들어, 네트워크 요청이 끝난 뒤 결과를 처리하는 클로저가 이에 해당한다. 언제 @escaping을 사용해야 하는가?클로저가 다음 중 하나라도 해당되면 @escaping을 붙여야 한다.함수가 종료된 이후에 클로저가 실행된다.클로저가 저장 프로퍼티로 저장된다.클로저가 DispatchQueue, OperationQueue 등에 의해 나중에 호출된다. func fetchData(completion: @escaping (String) -> Void) { ..

iOS/Swift 2025.05.14

Swift Closure

Closure 명명된 함수 생성없이 실행되는 코드의 그룹을 말한다 이 클로저는 정의된 context 에서 상수, 변수에 대한 참조를 캡처하고 저장할 수 있다.이러한 상수와 변수를 closing over 라고 한다.Swift 는 캡처의 모든 메모리 관리를 처리한다. 클로저는 세가지의 형태 중 하나의 모습을 한다 전역 함수 : 이름을 가지고 어떠한 값도 캡처하지 않음중첩 함수 : 둘러싼 함수로 부터 값을 캡처주변 context 의 값을 캡처할 수 있는 경량 구문으로 작성되는 이름 없는 클로저 Function 과 Closure import SwiftUIstruct ClosureFunctionDemoView: View { // MARK: - 1. Function (이름 있는 함수) fun..

iOS/Swift 2025.05.03

Swift 접근 제어 요약

1. 접근 제어란?다른 소스 파일이나 모듈에서 코드에 접근할 수 있는지 여부를 제한.구현 세부사항 은닉 및 공용 인터페이스 정의 목적.클래스, 구조체, 열거형, 프로퍼티, 메서드, 초기화, 서브스크립트, 프로토콜, 전역 함수 등에 적용 가능.2. 핵심 개념개념설명모듈독립적인 빌드/배포 단위 (예: 앱, 프레임워크)소스 파일모듈 내의 개별 .swift 파일패키지여러 모듈을 묶은 집합 (SwiftPM 기준)3. 접근 수준 5단계수준설명open가장 개방적. 다른 모듈에서도 상속, 재정의 가능 (클래스/멤버만 사용 가능)public다른 모듈에서 접근은 가능, 상속/재정의는 불가internal기본값. 같은 모듈 내에서만 사용 가능fileprivate같은 소스 파일 내에서만 접근 가능private같은 선언 블록 및..

iOS/Swift 2025.05.02
728x90