일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- arc in swift
- 우유혁명
- sectionHeader
- 21wwdc
- uinib
- compositional layout
- container
- sendable
- IOS
- itemidentifiertype
- propertywrapper
- Asynchronous
- DiffableDataSource
- reference sementics
- JSON
- 2021wwdc
- dynamic dispatch
- Di
- vwt
- SWIFT
- diffabledatasourcesnapshot
- method dispatch
- projectedvalue
- collectionView layout
- assembly
- value sementics
- hashable
- itemidentifier
- swinject
- di library
- Today
- Total
목록전체 글 (18)
onemoon Studio
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/moiUX/btq27ZrdHrx/l7wcyOEkETRTiBnExhx0Ek/img.png)
Swinject 저번 포스팅에서 SOLID를 공부한 이유는 사실 DI를 이해하고 이를 적용하기 위함이었다. 직접 프로토콜을 설계하고 작업하려다가 기존에 나와있는 DI Library 는 어떻게 활용하는지 궁금해서 문서를 읽고 예제를 만들어봤다. 오늘 소개할 라이브러리는 Swinject 라는 DI Library 이고, 추가로 SwinjectStoryboard를 간단하게 사용할 예정이다. 이번 포스팅에서는 문서에서 중요하다고 생각한 부분들을 추리고, 예제 및 문서의 코드를 직접 활용하면서 어떻게 사용했는지 설명 할 생각이다. 문서의 양이 얼마 되지 않으니 한번 전체를 읽어보고 다시 와서 핵심을 파악하는 것을 추천한다. 글이 너무 길어져서 읽기 힘들다는 생각이 들어 2개의 포스트로 나누었다. 첫번째 포스트에서는..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dlQSWn/btq2kroBPE3/gXHDkTSCiUQnxO8FlaSHhk/img.png)
코드를 작성하다보면 SOLID Principle이라는 규칙을 자주 보고는 한다. 물론 이를 공부한다고 모든 코드를 SOLID에 입각한 코드로 변경하는 것은 무리다. 하지만 객체지향을 공부하는 사람으로써 바이블격인 SOLID를 공부하고 이를 정리해야겠다는 생각이 들었다. 글의 순서는 아래와 같다. 저 또한 배우고 있는 과정이기 때문에 문제가 있거나 잘못된 부분이 있다면 감사하겠습니다! SOLID Principle Single Responsibility Principle Open/Close Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle SOLID Principle 어떤 장..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/brNaKI/btq0tXCazha/O34wDUjBT6zYp00IFkjkO1/img.png)
Responder Chain을 정리하다보니 앱이 유저의 인터렉션을 어떻게 처리하는지를 정리할 수 있어서 (그래야만 이해할 수 있어서) 부제를 붙이게 되었다. 단순히 Responder Chain을 설명하기 보다는 어떤 요소들이 결합되어서 Responder Chain 이 어떻게 사용되는지 그리고 왜 사용되었는지를 설명 하고자 한다. 또한 처음부터 Article을 읽고 설명하기 보다는 각 요소들의 문서를 먼저 읽어보며 정리하고 마지막에는 Article을 종합하면서 마무리 할 예정이다. 대부분 문서의 내용을 해석했으며 핵심내용을 제외한 일부는 생략을 한 경우도 있다. 따라서 이해가 잘 되지 않는다면 직접 가서 읽는 것을 추천한다. 글의 순서는 아래와 같다. UIResponder UIEvent UIControl ..
iOS 개발을 하다보면 access control 에 대해서 관심이 생길때가 있다. final 혹은 private 을 붙히면 성능에 더 좋다라고 막연히 듣기만 했는데 이번에 한번 그 이유를 정리하고 기록을 남기고자 한다. Increasing Performance Reducing Dynamic Dispatch 프로그램의 성능을 높히기 위해서 Dynamic Dispatch 를 줄이는 방법이 있다. 그렇다면 Dynamic Dispatch란 무엇이고 이를 줄이면서 어떻게 성능이 개선되는지 한번 알아보자 Dispatch 먼저 Dispatch 의 개념부터 알아보도록 하자. Dispatch는 어떤 메소드를 호출할 것인가를 결정하여 그것을 실행하는 과정이다. Dispatch 방식은 Static Dispatch, Dyn..
knowledge Base SubClass Encode Issue encode ? container ? Tip 03.07 수정 Knowledge Base 이전 포스트와 동일하게 보편적으로 우리는 json 형식으로 데이터를 감싸는 방식을 자주 활용한다. 다시 한번 개념을 돌아보자면, 외부의 표현을 내부의 표현으로 변경하는 것이 decode, 내부의 표현을 외부의 표현으로 변경 하는 것이 encode 이다. 이때 외부의 표현은 여러가지로 해석될 수 있으며 해당 포스트에서는 JSON 형식을 갖춘 데이터이다. 사실 encode는 decode와 반대의 개념이기 때문에, 이전 포스트를 통해 decode는 어떤 방식으로 활용 했는지 알고 오는 것이 좋을 것이라고 생각한다. 또한 Codable(Encodable & D..
Decoding 정복하기 Knowledge Base SubClass Decode 이슈 Key가 없는 경우에 대한 이슈 container ? Tip 03.07 수정 들어가며 네트워크를 통해서 데이터를 주고 받을 때 우리가 편한 객체로 변환하거나 변환 되어서 데이터를 관리 하고는 한다. 해당 포스트는 데이터를 처리하는 방식에 대해서 말해 보고자 한다. 기본적인 개념도 있지만 그 보다는 실제로 데이터를 주고 받으면서 발생했던 이슈 들을 조금 더 집중해서 다루고 공유하기 위해서 해당 포스트를 작성하였다. Knowledge Base API를 통해 데이터를 주고 받기 위해서는 json 형식이 보편적으로 사용된다. json으로 데이터를 쉽게 처리하기 위해서 우리는 Codable 혹은 Decodable, Encodab..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/PDMBL/btqLJVMpHHL/idKnynBnA8KOKPLsgaaMJk/img.png)
우리는 네트워크를 통해서 데이터를 받아오는데 이때의 형식은 대부분 JSON을 사용하고는 한다. 이때 미리 정해놓은 프로토콜을 통해서 외부의 데이터와 내부의 데이터간의 전환을 도와준다. 이 프로토콜이 Codable 이다. Codable은 A type that can convert itself into and out of an external representation. 로 정의되어 있다. 즉 자신의 타입을 다른 표현으로 변경하거나 그 반대의 역할을 할 수 있도록 하는 것이 Codable 이라고 한다. 따라서 정확하게는 두개의 프로토콜을 합쳐놓은 타입 이라고 말할 수 있다. 자신의 타입을 다른 외부 표현으로 변경하는 작업을 encode라고 하고, 외부의 표현을 내부의 표현으로 변경하는 작업을 decode라고..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lNgjM/btqDGgTdivV/aNwE1d3HunzFMIPipa3630/img.png)
Text Size 구하기 Label 과 TextView TextField 등을 통한 UI를 작업할 때 보통은 오토레이아웃으로 처리를 하지만, 가끔은 텍스트를 통해서 직접 사이즈를 구해 작업을 해야 할 때가 있다. 구글링을 해보면 boundingRect(with:options:attributes:context:)와 size(withAttributes:) 이 두가지 메서드를 자주 사용하는 것을 확인할 수 있었고, 두 메서드를 제대로 확인하고 비교하고자 해당 포스트를 작성하게 되었다. # NSString.boundingRect(with:options:attributes:context:) Calculates and returns the bounding rect for the receiver drawn using..