전체 글 335

[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

블로그에 글 안쓰고 뭘 했냐면은

사실.. 비공개 글은 쫌 있다....뭔가.. 근데 그걸 공개 못한 이유는그렇게 써둔 글들이 다 내 머릿속에 있는가..? 이게 공부가 맞나..?하는 회의감이 들어서였다. 개발 문서는 진짜 넓다.자고 일어나면 바뀌어 있는 것도 있다.근데 여전히 깊게 못들어가고 겉에서 둥둥 떠있다는 느낌밖에 들지않는다.깊은 확신이 들지 않았다. 결국 블로그에 안쓰고 메모장에 휘갈기며... 그리고 Swift 딥다이브 스터디를 하는 중인데내가 중점적으로 보는 것은 이거다. 그래서 그 개발자는 왜 이런걸 개발했는데??뭐가 불편해서 이렇게 개선했는데?그러니까 여기에 무슨 철학적인 생각이 들어간건데?? CS 라기보다는 거의 진짜 무슨.. 언어처럼 생각하고 접근하고 있는데생각보다... 이렇게 공부하니 재밌는 것 같기도..

회고 2025.06.27

한달만에 블로그 글쓰기 창 앞에 앉아서

생각해보니 나는 꽤 초심자의 행운이 컸던 사람이다.어릴 때부터 무언가를 금방 배우고, 꽤 잘 따라하고, 쉽게 무언가를 했다.학교다닐 때도 그랬던 것 같고.. 컴퓨터, 인터넷? 하면 쇼핑이나 할 줄 알았던 내가9개월만에 갑자기 웹개발자로 스카웃이 됐고그러다 또 앱개발자로 업무를 전환하며 이직이 됐고, 또 다시 스카웃제의를 받으며 웹개발자가 됐다. 나는 타고났다는 말을 되게 좋아했다.노력을 안했는데 잘 하는 사람처럼 보이는 걸 내심 좋아했다. 그런데 나름 잘 채우고 있던 초심자의 행운은 이제 만료 된건지.. 그냥... 이래저래 힘든일이 갑자기 크게 크게 생기고정신적으로, 체력적으로, 건강 자체에 무리가 가더니 모든게 폭파됐다.하나하나 삐걱삐걱 거리더니,어느 순간부터는 작은 것 하나 조차 시작하기가 머뭇거려졌..

회고 2025.06.27

[문법/키워드] 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