swift 184

Swift nonmuating, mutating

Swift nonmuating, mutatingnonmutating은 해당 인스턴스의 상태를 변경하지 않음을 나타냄.기본적으로 struct나 enum의 메소드는 인스턴스의 프로퍼티를 변경할 수 없음.nonmutating 키워드는 인스턴스의 프로퍼티를 변경하지 않고 값을 설정할 수 있도록 허용다른말로 인스턴스 자체를 변경하지 않으면서 내부적으로 상태 조작 가능.Swift 언어의 발전에서 propertywrapper, macro를 이해하는데 도움.  예제 1private struct MyStruct { private var value: Int = 0 // ✅ mutating func increment() { value += 1 } // ❌ 내부 value..

SwiftUI @FoucsState @FocusedValue @FocusedObject

SwiftUI @FoucsState @FocusedValue @FocusedObject 요약@FocusState: 누가 포커스를 받았는지@FocusedValue: 포커스 된 값이 뭔지 관찰    - 값이 존재하더라도, Focus가 풀린 경우에는 관찰하고 있는 부분에서는 nil로 된다.extension FocusedValues { @Entry var commentFocusedValue: String?}@FocusedObject: 여러 유형의 변경사항을 보다 효율적으로 관리함.   - @StateObject 차이점   - 값이 존재하더라도, Focus가 풀린 경우에는 관찰하고 있는 부분에서는 nil로 된다.   @FocusState 일반적으로 enum을 구성하여 사용.Submit 버튼을 눌렀을 때 se..

CloudKit(iCloud) 정리 이론 #2

CloudKit(iCloud) 정리 이론 #2CloudKit 정리 환경설정 #1https://rldd.tistory.com/607CloudKit 정리 이론 #2https://rldd.tistory.com/619CloudKit 정리 코드 예제 #3https://rldd.tistory.com/631 Intro- CloudKit Console 분석- Schema   - Indexes   - Record Types   - Security Roles   - History- Data   - Records   - Zones   - Subscriptions - CKSyncEngine (iOS 17이후) Schema메타데이터 • createdTimestamp: 생성한 시각 (DATE/TIME)• createdUserRe..

Accessibility & Inclusion - WWDC23

Accessibility & Inclusion - WWDC23 Apple에게 접근성은 필수적인 부분.우리가 앱의 접근성을 매우 쉽게 개선할 수 있도록 애플은 여러가지를 개선 Introduce- Accessibility enhancements - 새로운 API에 탐구- Improve accessibility visual - SwiftUI에서 접근성 개선- Keep state up-to-date - UIKit에서 접근성 최신 상태로 유지하는 방법 새로운 접근성 안내 isToggle을 통해 힌트를 제공 알림레이아웃 변경화면 변경페이지 스크롤 알림을Swift에 네이티브 방식을 전송 가능 버튼의 행위에 알림을 달 수 있음. 중요도를 설정할 수도 있음.제 시간에 발음되지 않으면 무시되도 무방..

apple/WWDC 2024.07.31

Swift의 성능 살펴보기 - WWDC24

Swift의 성능 살펴보기 - WWDC24Swift의 Low-level에 대해서 알아볼 예정 Introduce- What is performance?: 성능이란?- Low-level principles: Low-level의 성능을 볼 때 고려해야 할 원칙- Putting it together: Swift의 어떻게 구현되는지, 성능에 어떤 영향에 미치는지 세부 사항을 알아보기 - What is performance?성능을 다차원적이고, 상황에 따라 달라집니다. 일반적으로 우리는 거시적인 문제 때문에 성능에 관심을 갖는다. UI가 클릭하기 힘들 정도로 버벅이는 등의 문제가 생김. 하향식 방법을 조사많은 경우 코드의 Low-level 수준의 성능에 영향을 주지 않고 알고리즘 개선을 통해 이러한 문제를 해결...

apple/WWDC 2024.07.28

AVFoundation의 미디어 성능 지표 살펴보기 - WWDC24

AVFoundation의 미디어 성능 지표 살펴보기 - WWDC24Introduce- What are events?- Subscribing to events? iOS18에서는 미디어 성능 지표가 이벤트로 표시되고, 앱에서 구독하는 방법에 대해서 알아볼 예정 미디어에서 발생하는 일반적인 문제 1. 처음에 시작하기까지 너무 오랜 시간이 걸리는 점.2. 재생이 중간에 멈추는 점. iOS 18에서는 클라이언트에서 측정할 수 있는 더 많은 정보를 제공해 줌.1. 처음에 시작하기까지 너무 오랜 시간이 걸리는 점. 위 사진을 보면 세그먼트보다 Content Key를 요청하는데 오랜 시간이 걸렸음.이런 경우에는 키 서버 성능을 개선하거나, 재생하기 전 Content Key를 미리 로드된 키를 확인. => 이런 과..

apple/WWDC 2024.07.28

[Swift] JSON 형태로 바꾸는 방법

JSON 형태로 바꾸는 방법 서버에서 JSON으로 만들어서 올려달라고 해서, 구조체를 특정 키 값을 지정해서 올리기 위해 학습한 부분  아래는 JSON으로 바꾸는 코드extension Encodable { /// 인코딩 가능한 문자열을 JSON 직렬화 var jsonSerialized: String? { let jsonEncoder = JSONEncoder() do { jsonEncoder.outputFormatting = .withoutEscapingSlashes let jsonData = try jsonEncoder.encode(self) return String(data: jsonData, encoding..

[Swift] New access modifier: package

New access modifier: package Introduction 현재 다른 모듈에서 특정 심볼에 접근하기 위해서는 public으로 정의되어야 함. public 패키지 내외부 모두에서 접근 가능하기에 바람직하지 않음. 따라서 새로운 접근제어자를 만들어 심볼의 범위를 더 명확하게 하고자 함. Swift 5.9에서 도입 Motivation Module Engine in gamePkg: public struct MainEngine { public init() { ... } // `public`으로 의도된 프로퍼티 public var stats: String { ... } // 동일한 패키지의 `Game`에서만 접근할 수 있는 `run` 함수 public func run() { ... } } Modul..

[Natural Language] Overview

[Natural Language] Overview - Overview - tokenizing-natural-language-text - identifying-the-language-in-text 자연어 텍스트를 분석하고 언어별 메타데이터 추론 자연어 프레임워크는 다양한 언어와 스크립트를 지원하는 다양한 자연어 처리(NLP) 기능을 제공. 이 프레임워크를 사용하여 자연어 텍스트를 단락, 문장 또는 단어로 분류하고 품사, 어휘 클래스, 어휘, 스크립트 및 언어와 같은 해당 세그먼트에 대한 정보에 태그를 지정할 수 있음. 이 프레임워크를 사용하여 다음과 같은 작업을 수행 - 언어 식별, 텍스트의 언어를 자동으로 감지 - 토큰화, 텍스트 조각을 언어 단위 또는 토큰으로 나누는 작업 - 품사 태깅: 개별 단어에 ..