Sign in

WWDC2021 Demystify SwiftUI 중 Lifetime 정리글

SwiftUI 는 우리의 코드에서 아래의 세가지 요소를 확인합니다

이 세 가지 개념을 통해 SwiftUI는 변경해야 할 사항(what), 변경 방법(how), 변경 시기(when)를 결정할 수 있습니다.

오늘은 이전 시간에 살펴본 view의 identity가 어떤식으로 view와 data (state) 의 수명에 관련되어있는지 …


WWDC2021 Demystify SwiftUI 중 Identity 정리글

SwiftUI 는 우리의 코드에서 아래의 세가지 요소를 확인합니다

이 세 가지 개념을 통해 SwiftUI는 변경해야 할 사항(what), 변경 방법(how), 변경 시기(when)를 결정할 수 있습니다.

오늘은 이 중 첫번째 개념인 Identity 에 대해 살펴보겠습니다.

Identity

여기 두개의 발바닥 view가 있습니다. 이것들은 완전히


Embed in HStack / Embed in VStack shortcut

canvas 가 열리지 않은 상태에서 Text와 같은 UI 컴포넌트를 cmd + click 하면 아래와 같은 pop over 가 나온다

하지만 cmd + option + enter로 canvas 를 열어주고 똑같이 cmd + click 을 다시 해본다면? (참고로 canvas 를 닫고 싶으면 cmd + enter )


흔들기 제스처를 파악해봅시다

개-하! 릠들 별다방 앱에서 흔들흔들하면 pay가 바로 뜨고 카톡에서 흔들흔들하면 QR 체크인 코드 뜨는거 알구 현생 살구 계시는지..?! (물론 카톡에선 아직 실험실에 있는 기능이라 설정 > 실험실에서 쉐이크 기능 켜야하기하지만여)


개발자 메뉴에서 javascript 를 실행해보자

디버깅 하려면 Safari Technology Preview 깔아야하는데 없다면 깔고오세욤..! 기본 사파리로는 안된답니당..?^.ㅠ (사파리 13 부터 미지원)

Safari Technology Preview

그럼 이제 simulator에 디버깅하고자하는 웹을 띄워줍니다. 실제 기기를 연결해서 확인할 수도 있는데, 그때는 Safari > 고급 > 웹 속성 켜기를 먼저 하셔야해요!


기본 언어 설정에 따라 음성 송출이 되지 않을 수 있다구요?

UIAccessibilityCustomAction 이란?

iOS의 accessibility에서 customAction 을 사용한다는게 어떤 의미인지 알고 계시나요?

Voice Over를 켜서 element 들을 탐색할때, 종종 마지막에 “동작을 사용할 수 있습니다” 라는 코멘트가 나옵니다. 이때 스와이프 업 / 다운을 통해 해당 element에 대한 특정 동작을 수행할 수 있습니다.

해당 예시는 기본 시계 앱에서 찾아볼 수 있는데요


왜 단일 값으로도 생성되고, array로도 생성되시는지..???

기존 상황

UIView extension에 accessibilityTraits 를 설정해주는 함수가 있다고 해봅시다

func setAccessibility(traits: UIAccessibilityTraits) {
self.accessibilityTraits = traits
}

저는 요런식으로 쓰고 있었구요

view.setAccessibility(traits: .button)

추가 요구 사항

그러다가 trait를 여러개 넘기고 싶은거예요..? 흠.. 여러개 넘기려면..

func setAccessibility(traits: UIAccessibilityTraits...)

요런식으로 parameter를 variadic parameter 로 바꿔야하나.. …


Token-Based Connection vs Certificate-Based Connection to APNs

provider server(push 알림 보내는 서버)와 Apple Push Notification service(APNs) 통신은 secure connection 위에서 이뤄져야하는데, 안전한 연결 설정 방법에는 두가지가 있다.

1. APNs에 대한 토큰 기반 연결 설정


Collection에서 map 이 실제로 어떻게 구현되어 있을까요?

칭긔칭긔가 자꾸 모나드에 꽂혀서 발표를 한다길래 저도 같이 공부 손민수하다가 “엥.. 나도 map 함수 만들 수 있겠는데?ㅎㅎ” 하는 근거없는.. 자신감이 들고 만것…

하지만 섣불리 도전하기 전에 Swift에서는 어떻게 구현되어있는지 먼저 파보고 싶어져서 ㅎㅎ? 오늘도 글 찌는 노인.. 시작합니다

map(_:)을 찾아서..

[1, 2].map { number in number.description }

이렇게 map 을 사용하고 있다고 해보자구여. 그리고 cmd + click 해서 찾아가보면?! Array 안에 정의되어 있네염

@frozen public struct Array<Element> {
@inlinable public func map<T …


우선 순위의 뒤바뀜(Priority Inversion)과 해결 방법에 대해 알아봅시다

Previously on GCD…

우리는 [iOS] 차근차근 시작하는 GCD — 11 부터 여러개의 스레드에서 동시에 일을 진행할 때 발생할 수 있는 문제, 즉 동시성 문제(Concurrency Problem)에 대해 다뤄오고 있습니다. 아래 세가지 케이스 중 경쟁 상태, 교착 상태는 모두 알아봤으니

마지막으로 우선 순위의 뒤바뀜 케이스를 조져보도록 합시다.

Priority Inversion (우선 순위의 뒤바뀜)

개념

우선 순위의 뒤바뀜이란

qos (서비스 품질)가 뒤바뀌어서 작업이 진행되는 경우

를 뜻합니다. 어떤 상황인지 그림으로 자세히 보시죠 ✍🏻

이렇게 각각의 qos 가 설정된 세개의 queue …

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store