728x90

WWDC 13

[WWDC21] Meet AsyncSequence

안녕하세요. AsyncSequence가 뭔지 WWDC 영상 보면서 알아볼게요. # AsyncSequence async/await은 저번에 'Meet async/await in Swift'에서 알아봤어요. AsyncSequence는 특정 element에 대해 비동기적이고 순차적인 반복 액세스를 제공합니다. 이를 위해 for-await-in 또는 for-try-await-in 구문을 사용합니다. (for-await-in 구문을 사용하면 다음 element가 준비될 때까지 suspend하고, 다음 element가 준비되면 resume 합니다.) # Iterating Sequence, AsyncSequence AsyncSequence가 컴파일러에서 어떻게 동작하는지 가볍게 살펴볼게요. 일반적인 Sequence를..

WWDC 2024.03.13

[WWDC21] Meet async/await in Swift

안녕하세요. 예전에 봤던 async/await WWDC 영상 다시 보고 내용 정리 해 볼게요! 여러 번 봐서 그런가 별로 어렵진 않더라구요? 흐흐.. # async/await 사용 전 asyc/await가 없던 시절 비동기 처리를 하려면 completion handler나 delegeate를 사용했어야 했습니다. ㅇㄱㄹㅇ completion handler 방식은 복잡해질수록 indent 때문에 코드 가독성이 떨어지고 handler를 까먹고 호출하지 않아서 동작이 멈추는 경우가 생길 수 있습니다. #asyc/await 사용 async/await를 사용하면 위 코드를 이렇게 줄일 수 있어요. [참고] thread blocking async API가 호출되면 thread는 비동기처리가 완료되기 전까지 unbl..

WWDC 2024.03.09

[WWDC22] NavigationStack, NavigationSplitView

안녕하세요. 이번엔 WWDC22의 'The SwiftUI cookbook for navigation'를 보고 iOS 16부터 새롭게 추가된 NavigationStack과 NavigationSplitView에 대해 공부할게요. # NavigationStack 기존 NavigationView에서 코드로 화면을 전환시키려면 아래처럼 NavigationLink 마다 별도의 binding을 해줘야 했습니다. iOS 16부터 추가된 NavigationStack, NavigationLink의 new API, 그리고 new 수식어인 navigationDestination를 사용하면 쉽게 구현이 가능합니다. @State 프로퍼티인 path 정보를 수정함으로써 deep linking도 가능합니다. # NavigationS..

WWDC 2024.03.02

[WWDC20] State, Binding, StateObject, ObservedObject

안녕하세요. 이번에는 WWDC20의 'Data Essentials in SwiftUI' 영상을 보고 내용 정리해 볼게요. (WWDC에서 예시로 든 샘플앱은 제가 나름대로 만들어서 github에 올려두었으니 참고해 주세요!) https://github.com/phillip5094/WWDC-Example/tree/main/WWDC20/WWDC20-BookClub # 개요 앱을 만들 때는 크게 3가지를 고려해야 합니다. 1) View에서 필요한 데이터가 무엇인가 2) View에서 데이터를 어떻게 조작하는가 3) 데이터는 어디서 오는가 (=> source of truth) 고려사항을 해결하기 위해서 앞으로 설명할 State, Binding, StateObject, ObservedObject 같은 것들이 사용됩니..

WWDC 2024.02.19

[WWDC20] App essentials in SwiftUI

안녕하세요. 이번엔 WWDC20 'App essentials in SwiftUI' 영상을 보고 SwiftUI의 App, Scene, View를 알아가는 시간을 가져볼게요. # Views, scenes, and apps ## Views 앱 화면에 보이는 모든 것은 View에 속해있습니다. ## Scenes 특정 플랫폼에선 전체 화면을 서로 다른 영역으로 쪼개서 앱을 표시합니다. SwiftUI에선 서로 다른 영역을 Scene이라고 부릅니다. Window는 Scene의 콘텐츠를 화면에 표시합니다. iPadOS의 경우 아래처럼 여러 window를 나란히 표시할 수 있어요. macOS의 경우 아래처럼 다른 Scene의 콘텐츠를 여러 window로 표시할 수 있고, 탭 형식으로 된 하나의 window로도 모을 수..

WWDC 2024.01.15

[WWDC20] Stacks, Grids, and Outlines in SwiftUI

안녕하세요. 늦은 감이 있지만 WWDC20 'Stacks, Grids, and Outlines in SwiftUI' 공부해 보고 내용 정리할게요. # 개요 SwiftUI의 layout primitives에 대해 알아보자! # Stacks ScrollView와 VStack을 활용하면 왼쪽과 같은 화면을 만들 수 있어요. 이때 한 가지 문제점이 있어요. VStack 요소가 늘어날수록(=이미지가 하나씩 추가될수록) 화면에 View를 그릴 때 시간이 오래 걸리게 됩니다. 모든 요소를 loading 하는데 시간이 오래 걸리는 것이죠. 이럴 때 LazyVStack, LazyHStack을 사용하면 됩니다. LazyVStack 또는 LazyHStack은 VStack, HStack과 동일하지만 컨텐츠가 화면에 표시될 때..

WWDC 2024.01.05

[WWDC23] Get started with privacy manifests

안녕하세요. 이번엔 WWDC23 'Get started with privacy manifests' 세션을 보고 내용 정리해 볼게요. #개요 앱 사용자는 Privacy Nutrition Labels를 통해 앱 내에서 어떤 데이터가 수집되고 있는지 쉽게 알 수 있습니다. 앱 개발자는 이런 Privacy Nutrition Labels 정보를 App Store Connect에 입력해야 하는데요. 이 정보는 앱 전체에 해당되는 내용이기 때문에, 정확한 Privacy Nutrition Labels 정보를 입력하기 위해선 앱 내에서 사용하고 있는 외부 SDK가 어떤 데이터를 수집하고 있고 어떻게 관리하는지도 알아야 합니다. Privacy manifests는 외부 SDK의 개인 정보 보호 관행에 대한 정보를 외부 SD..

WWDC 2023.08.20

[WWDC23] Verify app dependencies with digital signatures

안녕하세요. 이번엔 WWDC23 'Verify app dependencies with digital signatures' 세션에 대한 내용 정리해 볼게요. # 개요 Xcode에서의 의존성 서명 검증(Dependency signature verification)은 앱 개발자의 앱을 보호하며 SDK 개발자가 배포한 SDK를 보호합니다. 앱 개발하면 개발 편의성을 위해 외부 SDK를 사용하는 경우가 많은데요. 아래처럼 사용하는 외부 SDK 중 하나에 문제가 있다면 앱에도 영향이 갈 수 있습니다. 앱 개발자 또는 SDK 개발자는 코드 내에서 사용하고 있는 외부 SDK에 문제가 없는지 확인 및 검증을 해야 할 책임이 있어요. Xcode 15부터 의존성 서명 검증 기능을 제공하고, 외부 SDK 확인 및 검증 작업을..

WWDC 2023.08.16

[WWDC22] Explore App Tracking Transparency

안녕하세요. WWDC22 'Explore App Tracking Transparency' 세션을 보고 내용 정리해 볼게요. 사용자를 추적(tracking)하려면 사용자한테 권한을 받아야 하고, 그러기 위해선 AppTrackingTransparency framework를 적용해야 합니다. 이번 세션을 통해서 언제 AppTrackingTransparency를 적용하면 좋을지, 어떻게 적용해야 하는지를 알아볼 예정이에요. # When to adopt 추적이란 앱에서 수집된 사용자 또는 기기 데이터를 다른 회사의 앱, 웹 사이트에서 수집된 사용자 또는 기기 데이터와 연결해서 타겟팅 광고 또는 광고 측정을 수행하는 행위 또는 사용자 또는 기기 데이터를 데이터 브로커와 공유하는 행위를 의미합니다. 추적 관련한 몇 ..

WWDC 2023.08.05

[WWDC22] Create your Privacy Nutrition Label

안녕하세요. WWDC22 'Create your Privacy Nutrition Label' 라는 세션의 내용을 가볍게 정리해 볼게요. 사실 별 내용 없습니다..ㅎ # Label creation process Privacy Nutrition Label은 이런 거예요. (어떤 데이터가 수집되고 어떻게 사용되는지 사용자에게 알려주는 정보입니다.) 이 라벨을 쓰기 위해선 앱 내에서 어떤 데이터가 수집되고 있고 어떻게 쓰이는지를 파악해야겠죠? 보통 앱을 만들면 외부 SDK(RxSwift, Alamofire 등)를 활용하는 일이 많을 텐데요. 앱 자체에서 수집하는 데이터 뿐만 아니라 외부 SDK에서 관리 및 수집하는 데이터를 모두 포함해서 Label을 작성해줘야 합니다. (어떤 데이터를 수집하는지에 대해선 외부 ..

WWDC 2023.07.31