일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- reference sementics
- itemidentifier
- assembly
- projectedvalue
- Asynchronous
- container
- diffabledatasourcesnapshot
- compositional layout
- SWIFT
- sendable
- method dispatch
- itemidentifiertype
- DiffableDataSource
- arc in swift
- sectionHeader
- 2021wwdc
- dynamic dispatch
- vwt
- Di
- IOS
- 21wwdc
- value sementics
- collectionView layout
- JSON
- hashable
- uinib
- propertywrapper
- 우유혁명
- di library
- swinject
- Today
- Total
목록전체 글 (20)
Onemoon Studio
Struct stack 영역을 사용한다. Heap을 쓰지 않으므로 Reference couting 이 필요하지 않음 다른 변수에 할당한 경우 값 전체가 복사가 되며, 할당된 값을 변경하더라도 기존의 값이 변경되지 않는다. 따라서 Thread 의 의도치 않은 공유로부터 안전하다. Identity가 아닌 Value 자체가 중요하다. 그렇다면 성능은? 내부 데이터(property)가 만약 Heap 과 혼용되는 경우는 결국 값의 복사 + 레퍼런스도 카피가 된다. 이때 말하는 내부 데이터를 예를 들자면 string, array, set, dictionary 또한 COW(Copy On Write) 를 통해서 불필요한 작업을 줄임 만약 immutable 하게 만들면 어떤가? 실행할때 새로운 객체를 만드는 것은 비효율..
저번 포스팅에서 설명했듯이 이번에는 Layout 관련된 포스팅을 작성해보려고 합니다. CompositionalLayout 으로 넘어오면서 하나의 페이지 전체를 CollectionView로 구성하는 경우도 굉장히 많아졌습니다. 그만큼 확장성 및 활용도가 굉장히 뛰어난 Layout 이라고 생각합니다. 문서를 간단하게 읽고 이후에 직접 적용해보겠습니다. 문서를 먼저 살펴보게되면, 한마디로 유연한 레이아웃 객체라고 설명할 수 있습니다. iOS 13 부터 지원을 하며 UICollectionViewLayout 을 상속받는 것을 확인할 수 있습니다. @MainActor ? MainActor가 붙어있는 것을 확인할 수 있습니다. 마찬가지로 iOS 13 부터 사용이 가능하며, 문서를 살펴보면 “A singleton ac..
오랜만에 어떤 글을 쓸까 고민하다가 가장 많이 활용되는 것부터 하나씩 파헤쳐보자는 생각에 Diffable Datasource 관련된 글을 쓰기로 결정했습니다. 생각보다 양이 많을것 같아서 조금 주저했는데, 그래도 앞으로도 계속 사용될 친구이기 때문에 이 부분에 대해서 작성하기로 하였습니다. 먼저 Diffable의 데이터를 책임지는 SnapShot에 대해서 글을 쓰고 이후에 Layout과 dataSource에 대해서 글을 작성할 예정입니다. 문서를 기반으로 작성되었으며 하단에 레퍼런스 기재하였습니다. NSDiffableDataSourceSnapshot A representation of the state of the data in a view at a specific point in time. 특정 시점에..
이직을 하면서 처음에 가장 어려움을 겪었던 부분이 Storyboard 기반으로 UI를 작성하는 일이었습니다. UI를 그리는 자체는 어렵지 않았으나, 생성되는 시점이 기존에 사용하던 CodeBase와는 너무 달랐기 때문이었습니다. 이에 대해서 정리를 해야겠다고 생각을 했고, 생성 시점, File's owner 등등 여러가지 주제를 다룰 생각입니다. 하지만 제일 먼저 UINib에 대해서 명확하게 아는 것이 중요하다고 생각하여 오늘은 UINib에 대해서 정리를 해볼 생각입니다. UINib An object that contains Interface Builder nib files. 먼저 문서를 기반으로 몇가지를 살펴보겠습니다. 정의를 살펴보면 Interface Builder nib files 들을 갖고 있는 ..
안녕하세요 ! Mash-Up IT 동아리에서 3년 이상 활동하면서 여러 경험을 하고 이를 한번 블로그에도 공유를 하고자 합니다. 참고로 동아리의 홍보성 글이 아닌 제가 느낀 점을 그대로 작성할 생각입니다. IT 동아리가 궁금하신 분들 그리고 회사 일도 바쁜데 지원을 할까 말까 고민을 하시는 분들에게 제 경험이 도움이 되기를 바랍니다. 처음에는 가벼운 마음으로 다른 사람들이랑 협업이나 해봐야겠다! 는 생각으로 들어갔는데, 같이 프로젝트도 하고 이런저런 고민도 얘기해보고 좋은 사람들을 만났습니다. 지금 생각해보면 중요하다고 하는 20대의 큰 부분을 차지한 감사한 경험이라는 생각이 들었습니다. 저희 동아리는 학생 + 현직자의 비율이 거의 3:7 ~ 4:6 정도였는데 운이 좋게도 저는 학생일 때 들어가서 많은 ..
iOS에서는 메모리 관리를 위해서 ARC라는 기법을 사용합니다. Automatic Reference Counting의 약자로 객체의 사용을 추적하여 더 이상 사용되지 않는 경우 자동으로 메모리에서 해제하는 기법입니다. 이번에 Xcode 13의 ARC 최적화에서 어떻게 변경이 되었는지 그리고 어떤 side-effect 가 생길 가능성이 있는지 확인해보겠습니다. 해당 세션을 참고하여 작성하였습니다. Basic Swift에서는 값에 대한 타입으로 Reference Type 그리고 Value Type을 사용할 수 있으며 웬만하면 value Type을 사용하는 것을 추천합니다. 이유는 Reference Type을 사용하는 경우 상황에 따라서 의도치 않은 공유가 될 수 있기 때문입니다. 이때 말하는 Referenc..
이번 WWDC 에서 재밌었던 부분중 하나가 Concurrency 에 대한 세션이 아니었나 생각합니다. 이번에는 그중 가장 기본적인 async 그리고 await 에 대해서 설명한 Meet async / await in swift 세션에 대해서 한번 정리해보겠습니다. 주제를 나눈 기준은 세션을 참고한것이 아닌 제 주관적인 생각으로 나누었으니 이 점 꼭 참고하시길 바랍니다! basic of synchronous / asynchronous 이제는 비동기 프로그래밍은 일반 사용자( 프로그래머 )에게 필수적이고 일반적인 요소가 되었고 많이 사용하고 있습니다. 하지만 그만큼 잘못 사용하는 경우도 많이 봤었는데, 이런 상황들을 async/awit 를 통해서 어느정도 해결할 수 있을 것이라고 기대합니다. 마치 기존 동기..
이번에는 Swift 5.1 부터 사용이 가능해진 Property Wrapper 에 대해서 알아보겠습니다. 간단하게 요약하자면 Property Wrapper 는 getter와 setter 관련된 로직을 포함하고 있는 프로퍼티를 쉽게 선언할 수 있도록 합니다. 문서의 예시와 더불어 설명이 부족한 부분은 직접 중간 중간에 추가하였습니다. 모든 레퍼런스는 하단에 준비되어 있습니다. 간단한 정의와 더불어 몇 개의 예시를 들면서 어떻게 사용하는 지 배워보겠습니다. Property Wrapper 의 정확한 정의는 값을 저장하는 코드와 정의하는 코드를 분리시킬 수 있도록 하는 레이어를 추가하는 것입니다. 예를 들어 몇가지 프로퍼티에서 값을 가져올때 thread-safe 를 체크하거나, 값을 저장할 때 database ..
개발을 하다보면 공식 문서를 빈번하게 찾고는 합니다. 단순히 메서드 혹은 클래스는 현재 apple document 에서도 쉽게 찾을 수 있지만, 동작원리를 알아야 하는 경우 기존에 있던 레퍼런스를 찾는데 가끔 찾기가 힘든 경우가 있습니다. 대표적인 몇가지 가이드 및 레퍼런스 링크를 준비했으며 도움이 될만한 애플 공식 레퍼런스가 있다면 댓글 남겨주시면 감사하겠습니다! Swift Document Human Interface Guidelines Document Archive Document Archive 의 경우 더 이상 업데이트가 되지 않습니다. 기존의 문서 및 코드들을 아카이브 해놓은 곳이며 아래의 대부분 링크는 여기서 가져왔습니다. 최신 가이드가 있을 수도 있다는 점 유의하시길 바랍니다. View Pro..
자주 사용하고 있지만 정확한 개념을 설명하기 어렵다는 생각이 들어서 이번 포스팅을 통해 정리하고자 합니다. 처음 Swift를 공부하던 시절에 제일 헷갈렸던 부분이었던 것 같습니다. escaping closure를 이해하기 위해서는 몇가지 개념을 미리 알고 있는 것이 좋습니다. 비동기 코드를 쓰는 이유, scope의 개념, capturing values 를 먼저 설명한 뒤 escaping closure 그리고 이를 통해 생길 수 있는 strong reference cycle에 대해서 간단하게 설명하도록 하겠습니다. 비동기 코드를 쓰는 이유 이미 다른 블로그를 통해서 동기와 비동기에 대해서 많이 설명을 해놨기 때문에 저는 직접적으로 iOS에서 활용하는 방식을 예를 들어 설명하겠습니다. escaping clo..