반응형

분류 전체보기 182

Using existentials and generics(익스텐셜 / 제네릭 타입)

Using existentials and generics  Comparing existential and generic types스위프트 프로토콜들은 다양한 타입을 채택할 수 있는 기능과 특성을 정의할 수 있습니다예를들어 아래에 있는 것처럼 두 방식의 프로토콜을 볼 수 있습니다protocol Pollinator { func pollinate(_ plant: String)}//Pollinator protocol 채택하면 반드시 구현해야함struct Hummingbird: Pollinator { func pollinate(_ plant: String) { print("\(plant) pollinated by a hummingbird's bill.") }}//Pollinator p..

Swift 2024.08.06

SwiftUI | Transcribing speech to text

Request authorization to device hardwareScrumdinger는 오디오 녹음에서 회의 전사를 생성하므로, 기기의 마이크 접근이 필요합니다. 보안 기능으로 인해, 사용자는 개인 정보나 민감한 기기 하드웨어에 대한 접근을 명시적으로 허용해야 합니다. 사용자 데이터 보호에 대한 자세한 내용은 Protecting the User’s Privacy 문서를 참조하세요.이 섹션에서는 사용자가 접근을 허용하거나 거부하도록 요청하는 사용 설명을 추가할 것입니다.NSSpeechRecognitionUsageDescriptionYou can view a text transcription of your meeting in the app.NSMicrophoneUsageDescriptionAudio ..

SwiftUI 2024.08.06

SwiftUI | Examining data flow in Scrumdinger

Examining data flow in Scrumdinger프로젝트에서 두 개의 모델 객체인 ScrumTimer / SpeachRecognizer가 포함되어 있습니다이 객체들은 Scrumdinger 인터페이스에 표시되는 동적 데이터를 관리하고 있습니다 이전 튜토리얼에서 'ScrumTimer'를 이미 다루어 보았는데 다음 튜토리얼에서는 'SpeechRecognizer'의 인스턴스를 생성하고이 모델 객체들을 탐구하고 SiwftU의 상태 관리 및 생명주기 기능을 사용해서 데이터 흐름을 구현하는 방법을 알아보겠습니다 Scrum timer meeting properties스크럼 타이머 미팅 속성은 'ScrumTimer'데이터에서 상태와 생명주기를 관리하는 튜토리얼에서 미팅 뷰에 스크럼 타이머를 인스턴화 하고 미..

SwiftUI 2024.08.06

SwiftUI | Adopting new API features

Setting a deployment target각 타켓은 프로젝트의 배포 타겟 설정을  통해 앱이 실행될 수 있는 최소 운영 체제 버전을 지정한다이 설정은 앱 새발 시 사용할 수 있는 프레임워크 버전을 결정한다새로운 기능이나 프레임워크를 버전을 채택하려면 이 설정을 변경할 수 있다 Xcode 14에서 생성한 Scrumdinger 프로젝트의 배포 타겟은 iOS16입니다16이상을 실행하는 모든 장치에서 이 앱을 실행할 수 있습니다  iOS 16.0에서 도입된 NavigationStack을 Create a navigationhierachy에서 추가했기 때문에 Scrumdiger타겟을 15.0으로 설정하면 NavigationStack을 사용한 모든 부분에서 컴파일 오류가 발생합니다 NavigationStack..

SwiftUI 2024.08.06

Adopting Swift concurrency

Adopting Swift concurrency  Swift에서 동시성(Concurrency) 기능을 사용하면 비동기적이고 올바른 비동기 코드를 더 쉽게 작성할 수 있습니다현재 이 글에서 비동기 함수를 정의하고 호출하는 방법과 스위프트의 동시성 기능을 어떻게 간소화하는지 설명하고 있습니다  Simplifying asynchronous codeSwiftUI 앱에서는 모든 UI 작업을 메인 스레드에서 실행합니다또한 모든 사용자 이벤트(Tap, Swipe...)도 메인 스레드에서 전달됩니다앱이 올바르게 작동하려면 모든 뷰 업데이트와 이벤트 핸들러를 메인 스레드에서 실행해야 합니다 하지만 메인 스레드에서 너무 많은 작업을 수행하면 앱 전체가 반응이 느려집니다메인 스레드가 작업물을 완료하기 위해서 대기하면 뷰 업..

SwiftUI 2024.08.05

SwiftUI | Responding to events

Responding to events지금까지 배운 SwiftUI 프로퍼티 래퍼를 사용해서 앱의 사용자자 인터페이스에서 상태를 관리하고 사용자 상호작용에 응답할 수 있습니다하지만 앱 상태의 변화에 따라 어떻게 동작을 수행할 수 있을지 알 수 있을까?이 문서에는 SwiftUI 장면 아키텍처, 앱 상태, 뷰가 화면에 나타나고 사라지는 등 이벤트에 반응하는 뷰에 대해서 알아보고자 합니다Scene architecture앱 상태를 살펴보기 전에 SwiftUI가 장면을 구성하는 방법을 살펴볼 수 있습니다Scene은 시스템이 관리하는 수명 주기가 있는 앱 사용자 인터페이스의 일부라고 할 수 있습니다 앱을 만들려면 앱 protocol을 준수하는 구조를 정의하고 정의 앞에 @main 속성을 추가하여 유일한 진입점이라고 시..

SwiftUI 2024.08.02

Making classes observable

Making classes observable@State, @Binding속성 래퍼는 값 타입에서만 사용이 가능하며 두 속성 래퍼는 뷰 계층 구조에서 업데이트를 수행 합니다이번엔 참조 유형을 다루는 방법에 대해서 알아 볼 수 있습니다 Working with reference types이전에 배웠던 @State속성을 추가해서 프로퍼티를 식별했지만 구조체와 열거형 같은 값 유형에 대해서만 사용이 가능합니다SwiftUI는 참조 유형을 Source of of truth로 선언할 수 있는 프로퍼티 래퍼를 제공하고 있습니다 :@ObservedObject, @StateObject, @EnvironmentObject클래스에서 위에서 제시한 프로퍼티 래퍼를 사용하려면 클래스 Observable(관찰가능)하게 만들 필요가..

SwiftUI 2024.08.02

SwiftUI | Managing data flow between views(@State, @Binding)

Source of truth앱에서 정보를 여러 번 복사해서 관리하면 값의 변동이 예상치 못한 상황에 발생하고 버그로 이어지는 상황이 있습니다이를 피하기 위해서 각 데이터 요소에 대해서 단일 Source of Truth를 사용할 수 있습니다데이터 요소를 한 곳에 저장하고 여러 뷰에서 동일한 데이터가 접근할 수 있도록 하는 방법입니다 앱 내부 코드 곳곳에 만들 수 있고 어디에 정의할 지는 데이터가 여러 뷰에서 공유되는지 데이터가 변하는지에 따라서 달라질 수 있습니다 Swift property wrappers Swift에서 속성 래퍼를 사용해서 속성 초기화 패턴을 캡슐화하고 프로퍼티에 동작을 효율적으로 추가할 수 있도록 도와줍니다@State, @Binding 프로퍼티 래퍼를 사용하여 뷰가 쉽게 액세스할 수 있..

SwiftUI 2024.08.01

WWDC20 | App essentials in SwiftUI

App essentials in SwiftUI - WWDC20 - Videos - Apple DeveloperThanks to the new App protocol, SwiftUI now supports building entire apps! See how Apps, Scenes, and Views fit together. Learn how easy...developer.apple.com     화면에 표시되는 창부터 시작해서 테긋트 이미지 등 모든 필셀은어떤 방식으로도 뷰라고 부를 수 있습니다(제일 작은 단위)  플랫폼은 앱이 표시되는 방식을 제어하여 개별 지역에 앱 조각을 표시할 수 있습니다  이러한 별개의 영역을 Scenes라고 부르고 있습니다 Window는 장면의 내용이화면에 표시되는 일반적인 방..

WWDC 2024.07.22

WWDC| Get started with Swift concurrency

Meet async/await in Swift  Swift Async/await 기능으로 비동기 코드를 쉽게 작성할 수 있습니다  completionHandler / delegate pattern 등 여러가지 방법으로 비동기 코드를 작성할 수 있습니다  첫 번째 스레드는 sync(동기) 두 번째 스레드는 async(비동기)함수를 호출하면 작업을 시작한 스레드의 차단을 빠르게 해제하게됩니다. 그래서 스레드는 오래 실행되는 작업이 완료되는 동안 다른 작업을 수행 하게됩니다그러다 수행하던 작업이 완료되면 completionHandler를 호출해서 다음 작업을 진행하게 됩니다  각 행에 서버에 저장된 이미지의 썸네일이 표시되는 항목 목록입니다이러한 과정에 대해서 설명하고자 합니다  순서1.  thumbnailU..

WWDC 2024.07.17
반응형