WWDC 30

[Swift] WWDC21 - ARC in Swift : Basics and beyond

서론 지난 포스팅에서 CPU, 메모리같은 앱의 한정된 자원을 절약해야 한다고 말했었습니다. 그럼 메모리에 관한 공부가 더 필요하겠다고 생각해서 ARC에 관한 WWDC 영상도 찾아보았습니다. 익숙한 줄 알았던 ARC에 대해 더 자세히 알게 된 경험이었습니다. (WWDC 꿀잼) ( 좀 놀랐던건 전 지금까지 ARC를 "에이알씨"라고 읽었는데 "아크"라고 읽더라구요... 다른 분들도 아크라고 읽으시나요? 저만 에이알씨라고 읽었나요? ㅋㅋ ㅠㅠ 댓글로 알려주세요... ) ARC in Swift : Basics and beyond 이번 세션에서는 ARC가 어떻게 작동하는지 알고, 객체 수명에 대한 내용을 다룹니다. 이를 제대로 알아야 효과적인 Swift 개발이 가능합니다. Object lifetimes and AR..

WWDC/Swift 2022.10.21

[iOS] WWDC18 - Image and Graphics Best Practices

서론 이미지에 대한 WWDC를 찾아보며 이번 포스팅에서 정리할 "Image and Graphics Best Practices"까지 왔습니다. 사실 바로 직전 WWDC 포스팅(WWDC18 - iOS Memory Deep Dive)은 이 세션을 위한 정리였어요 ㅎㅎ iOS Memory Deep Dive의 이미지 파트 부분을 읽고 오시면 이해가 더 잘 되지 않을까 싶습니다. Image and Graphics Best Practices "Image and Graphics Best Practices" 세션은 총 세 개의 주제를 다룹니다. UIImage와 UIImageView, UIKit을 이용해 그리는 방법, 고급 CPU와 GPU 기술입니다. 이번 포스팅에서는 UIImage와 UIImageView에 대한 주제만 ..

WWDC/iOS 2022.10.20

[iOS] WWDC18 - iOS Memory Deep Dive

서론 메모리 공부를 하다 WWDC18의 iOS Memory Deep Dive까지 도달했습니다. 제 실력은 파도풀인데 다이빙하다 머리 깨지지 않을까 걱정했지만 일단 들어봤습니다 ㅎㅎ 내용도 어렵고 말도 너무 빨라 역대급으로 힘들었네요 ㅋㅋ ㅠ 천천히 하나씩 정리해 봅시다. (중간에 Tool에 대한 내용은 다루지 않았습니다. 지금 Xcode 버전으로 다루는 것이 좋을 거 같아서 나중에 따로 포스팅하겠습니다.) Why Reduce Memory 메모리를 줄이는 이유는 뭘까요? 바로 사용자가 더 나은 경험을 할 수 있기 때문입니다. 앱 실행 속도가 빨라지고 시스템이 더 잘 수행됩니다. 앱이 메모리에 더 오래 유지될 수 있고, 그러다보면 다른 앱도 더 오래 메모리에 남아 있을 수 있습니다. 최종적으론 사용자의 더 ..

WWDC/iOS 2022.10.19

[Swift] WWDC22 - Eliminate data races using Swift Concurrency (1)

서론 Swift Concurrency와 GCD를 비교하는 포스팅을 쓸 때 Swift Concurrency는 Data race에 안전하다고 했었습니다. 당시에는 정확히 어떻게 data race를 방지해주는지 알지 못했죠. 마침 WWDC22에 관련 내용이 있어 정리해보기로 했습니다. Sendable (https://developer.apple.com/documentation/swift/sendable)에 대한 내용을 미리 읽어보고 아래 내용을 보시면 더 이해가 쉬우실 것 같네요. 물론 아래에서도 Sendable에 대한 내용이 나오니 나중에 읽으셔도 괜찮습니다 ㅎㅎ 추가로 Actor에 대한 것도 다루는데 전 Actor에 대한 사전 학습이 되어 있지 않아 이해하기 너무 어려웠습니다. 그래서 이번 포스팅에서 다루..

WWDC/Swift 2022.09.26

[Swift] WWDC21 - Meet async / await in Swift

서론 이번에 들은 WWDC 영상은 "Meet async / await in Swift" 입니다. 처음으로 async / await에 대해 소개해주는 영상인데요. 사실 지난 포스팅에서 다룬 내용과 겹치는 내용이 많아 복습하는 기분이 들긴 했습니다. 그래도 async / await는 아직도 어려운 부분이 있어서 정리하면 좋겠죠. (아마 동일한 주제로 2~3개 더 올리지 않을까... 싶네요 ㅎㅎ;) Functions: synchronous and asynchronous UIKit에는 이미 많은 동기, 비동기 함수가 있습니다. 이번 영상에서는 UIImage를 예시로 들었습니다. size에 맞게 썸네일을 가져오는 메서드로 위쪽 메서드는 동기 버전, 아래쪽 메서드는 비동기 버전입니다. 비동기 버전에는 escapin..

WWDC/Swift 2022.09.20

[Swift] WWDC15 - Optimizing Swift Performance

저번 Understanding Swift ... 도 그렇고 이번 Optimizing Swift Performance도 그렇고 Swift에 관한 WWDC 내용은 정말 어렵네요 ㅠㅠ 여러 번 돌려봐야겠습니다... Optimizing Swift Performance Swift에는 클로저, 프로토콜, 제네릭, ARC처럼 좋은 기능이 많이 있습니다. 이런 고차원의 기능이 많으면 프로그램이 할 일이 많아지기 때문에 속도는 느려지기 마련입니다. 하지만 Swift는 고도로 최적화되어 native 코드를 굉장히 빠르게 컴파일해줍니다. Swift는 어떻게 두 마리 토끼를 다 잡았을까요? 애플은 위 사진의 모든 고급 기능들을 최적화하였습니다. Array Bounds Checks Optimizations 모두 알아볼 수 없으..

WWDC/Swift 2022.09.17

[Swift] WWDC22 - Embrace Swift generics

서론 WWDC22는 모든 세션에서 한글 자막을 지원합니다. 한글 자막이 어떤지 궁금해서 요즘 공부 중인 Generic에 관련된 세션을 보고 정리해보았습니다. 한글 자막에 대한 후기도 마지막에 가볍게 말해볼게요. Abstraction 추상화(Abstraction)에 대한 개념으로 영상이 시작됩니다. 아래 코드를 봅시다. 코드에서 * .pi / 180.0 이 중복됩니다. 중복되는 코드를 함수로 묶어 추상화가 가능하고 보일러 플레이트를 줄일 수 있습니다. 이번 포스팅(영상)에서는 농장 환경을 구성하는 코드를 예시로 들고 있습니다. Model with concrete types 첫 번째로 Cow 구조체가 있습니다. Cow 구조체는 eat 메서드를 가지고 있고 먹이로 Hay 구조체를 전달합니다. (Hay : 건초..

WWDC/Swift 2022.09.16

[Swift] WWDC16 - Understanding Swift Performance (3)

이전 글 Understanding Swift Performance (2) Generic drawACopy는 Generic을 이용해 매개변수 제약 조건을 주고 있습니다. 이는 프로토콜 타입과 무엇이 다를까요? 제네릭 코드는 매개변수 다형성이라고도 하는 보다 정적(static) 형태의 다형성을 지원합니다. 함수 foo는 Generic으로 만들어졌고 Drawable만 받을 수 있습니다. Point는 Drawable 프로토콜을 준수했으니 foo의 파라미터로 사용할 수 있습니다. 이 foo 함수가 실행되면면 Swift는 제네릭 타입 T를 Point 타입에 바인딩 합니다. 함수 foo가 바인딩과 함께 실행될 때 bar가 호출되면 local 변수는 직전에 사용한 타입인 Point를 가지게 됩니다. 타입은 매개변수를 ..

WWDC/Swift 2022.09.08

[Swift] WWDC16 - Understanding Swift Performance (2)

이전글 [Swift] Understanding Swift Performance (1) 지난 시간 지난 시간의 핵심은 최적화를 진행하는 방법이었습니다. 내 인스턴스가 스택과 힙 중 어디에 할당되는지, 인스턴스를 전달할 때 오버헤드가 얼마나 발생하는지, 인스턴스 메서드를 호출하면 어떤 디스패치로 동작하는지 고려해야 합니다. 구조체를 사용하여 다형성 코드를 작성하는 방법은 프로토콜 지향 프로그래밍입니다. Protocol Types 프로토콜 타입을 알아보면서 프로토콜 타입 및 제네릭(Generic) 코드를 어떻게 구현해야 하는지 알아봅시다. 또, 프로토콜 타입의 변수가 저장되고 복사되는 방식과 메서드 디스패치가 작동하는 방식을 살펴봅시다. 이전 포스팅에서 다뤘던 Point와 Line을 프로토콜로 구현했습니다. ..

WWDC/Swift 2022.09.07

[Swift] WWDC16 - Understanding Swift Performance (1)

WWDC 16의 Understanding Swift Performance 세션을 이제서야 보았습니다. 2편에 걸쳐 나눠서 정리해보려고 합니다. (해당 포스팅의 사진은 https://developer.apple.com/wwdc16/416 의 프레젠테이션 슬라이드에서 가져왔습니다.) 참고로 해당 포스팅에서는 메서드와 함수를 구분하여 표현하고 있습니다. 발표도 Method와 Function을 명확하게 구분해서 말하고 있더라고요. 두 개의 차이는 https://jeong9216.tistory.com/472 를 참고해 주세요. Dimensions of Performance 추상화를 만들고 추상화 메커니즘을 선택할 때 세 가지를 고려해야 합니다. 인스턴스가 스택에 할당되는지 힙에 할당되는지 인스턴스를 전달할 때 참..

WWDC/Swift 2022.09.07
반응형