본문 바로가기

전체 글46

test 보호되어 있는 글 입니다. 2023. 8. 8.
iOS 기술면접 정리 - 5. Swift (2) Delegate 패턴을 활용하는 경우를 예를 들어 설명하시오. delegate 패턴이란 - 객체가 자신이 할 일을 다른 객체에게 위임(delegate)할 때 사용하는 패턴 - 개인적인 의견: MVC, MVVM 패턴 등의 아키텍쳐 패턴에서 각 객체가 하는 일을 좀 더 명확하게 구분하기 위해 사용하기도 함 언제 사용했나 - 객체(클래스) 간의 소통이 필요할 때 주로 사용했었음 - View - View, View - ViewModel, Coordinator - Cordinator, Coordinator - View 등등 - 구체적으로는, 어떤 화면에서 나온 값을 다른 화면으로 넘길 때라던가, 뷰모델에서 처리한 비즈니스 로직의 결과 값을 뷰로 넘겨 화면에 보여줘야할 때 등등 Singleton 패턴을 활용하는 경.. 2023. 2. 8.
[iOS] RxSwift 정리 중 https://be-beee.notion.site/1-Observable-1bf93f1690b447da89c39ab5c3ae44cd 1. Observable Observable이란 be-beee.notion.site https://be-beee.notion.site/2-Subject-f7bc177abbc044f5a3028c9989af2d6a 2. Subject Subject란 be-beee.notion.site 2023. 2. 6.
[Swift] sync, async, serial, concurrent 이번 글에서는 애증의 단어들에 대한 개념을 정리해보려고 함 왜 애증이냐하면 아 이거 아는데 뭐였더라➡️구글링➡️아 맞아 이런 개념이었지 응응 이번에야말로 이해 완료.➡️시간 지남➡️아 이거 아는데 뭐였더라 이러한 무한의 굴레에 빠지게 만든 개념 중 하나이기 때문 이렇게 무한의 굴레에 빠진 것들이 몇개 있는데 (Rx라던가..) 이것들도 나중에 정리해야한다.. 아무튼 이번에는 제일 기본이 되는 sync, async, serial, concurrent에 대해 정리해보는 걸루~ sync vs async 단일 작업에 대한 특성의 차이를 의미. 이전 작업과 다음 작업 간의 상관관계가 없음. sync 앞서 작업하던 일이 다 끝난 후 다음 작업을 시작하는 방식 Swift에서는, DispatchQueue로 작업을 보낸 .. 2023. 1. 17.
[iOS] 클로저, Delegate, Notification Center, KVO 화면 및 컴포넌트 간 데이터 전달의 관점에서 클로저, Delegate, Notification Center, KVO의 장단점을 정리해봄. 개인적으로 느꼈던 점도 포함되어 있고, 줏어 듣거나 참고한 내용도 포함되어 있음. 클로저 (& Completion Handler) 장점 쓰기 편하다. Swift는 클로저를 1급 객체 취급하므로 객체에 넣어서 사용할 수 있다. 단점 에러처리가 복잡해진다. 클로저를 호출하지 않았다고 에러가 뜨진 않기 때문.. -> 메모리 릭이나 누락의 문제가 발생할 수 있음 객체로 사용했을 때 뎁스가 깊어져서 가독성이 떨어질 수 있다. 소통하는 객체간 결합도(=소통하는 두 객체가 서로의 존재를 인지하는 정도)가 높아짐 Delegate 아마 제일 많이 쓰는 방식일 듯 장점 소통하는 객체간 .. 2023. 1. 11.
[Swift] method swizzling Method Dispatch 시리즈 대망의 3탄 method swizzling 이건 또 무엇인고.. 하면서 찾아보니 의미는 한줄로 간단하게 적혀있었다. 런타임 시점에 기존 메서드를 다른 메서드로 바꾸어 실행하는 것. 사실 이 의미를 보고 들었던 궁금증이 몇가지 있었는데 대충 이랬다. 1. 굳이 런타임 시점에 다른 메서드로 바꿔줘야할 필요나 이유가 있는지? 2. 시스템 상으로 구현되어 있는 메서드에 swizzling을 적용시킬 수 있다는데, 그렇게 했다가 에러나면 어떡함? 안 쓰는 게 좋은 거 아님? 활용 방법도 알아보고 궁금증도 해결해보는 걸로~ Method Swizzling 구현하기 Q: Method Swizzling 어떻게 구현하나요? A: method_exchangeImplementations() .. 2023. 1. 11.