TIL(Today I Learned)
4월 15일(목)
학습내용
- 야곰의 한마디
- RxSwift 등의 개념을 내가 필요를 느끼지 않았는데 배우는 것은 크게 와닿지 않고, 의미가 없을 수 있다.
- RxSwift 등 채용 우대사항에 적혀있다고 다 알아야된다고 생각하지말아라. 오히려 내가 확실하게 그 개념이 왜 필요한지, 어떻게 사용하는지에 대해서 모르면 언급하지 않는 것이 좋다.
- LLDB를 공부해라. 실무 프로젝트는 규모가 크다. 빌드 시간이 오래 걸리는 프로젝트는 새로 빌드하면서 디버깅이 불가능하다. 그래서 LLD를 사용하면 개발 시간을 많이 단축 시킬 수 있다.
- 이력서, 포트폴리오는 완성이 없으므로 너무 완벽하게 하려고 하지마라. 일단 해보고 수정해보는식으로 준비해라.
- Kahoot 퀴즈
- Visual Format ‘[button(100@20)]’ 의 의미는 ‘버튼 너비는 100, 우선도 20’ 이다.
- NSAutoresizingMaskLayoutConstraint ‘h=-&&’ 의 디버깅 로그의 의미는 ‘왼쪽 마진 고정, 너비 유연, 오른쪽 마진 유연’이다.
- Operation은 취소가 가능하다.
- Operation의 cancel 프로퍼티를 true로 설정해도 작업을 알아서 취소하는것은 아니다.
- Operation은 GCD를 기반으로 구현되었다.
- DispatchQueue와 OperationQueue는 순서대로 작업을 수행하도록 할 수 있다. (Serial큐를 이용하여 작업이 시작하는 순서를 예측할 수 있다. 끝나는 순서는 제각각 다를 수 있다.)
- 커스텀 작업을 구현하기 위해 상속받을 추상 클래스는 Operation이다.
- Operation을 상속받은 사용자 정의 Operation에서 수행해야 할 작업을 구현할 메서드는 main()이다.
- GCD에서는 작업의 순서를 지정할 수 없다. (작업을 차례대로 처리한다는 것이랑 의미가 다르다. 작업의 순서를 지정한다는 것은 이전 작업이 끝나야 다음 작업이 시작한다는 순서를 지정한다는 것이고, 이는 OperationQueue에서 의존성을 설정함으로써만 가능하다.)
- 야곰 RxSwift 강의
- RxSwift는 Swift로 구현된 ReactiveX이다.
- UIKit을 Reactive하게 이용가능하도록 하는 것이 RxCocoa이다.
- ReactiveX은 비동기와 이벤트 기반의 프로그램을 만들기 위한 라이브러리이며, observable sequence를 이용하여 구현된 라이브러리이다.
- Reactive eXtension의 약자. 이벤트에 Reactive하도록 확장했다라는 의미이다.
- 즉, ReactiveX은 Observer Pattern의 확장판이다.
- Observable
- just
- Observable Sequence를 반환한다.
- from
- 입력으로 들어온 array를 Observable Sequence로 변환하여 반환한다.
- just
- Operator
- Observable에 변형, 필터링 등의 연산을 할때 사용한다.
- Subscribe
- 관찰하고 있는 데이터의 변화를 다룰 때 사용하는 함수이다.
- Subscribe의 onError, onCompleted, onDisposed 파라미터를 이용하여 observable의 에러발생, 완료시점, 해제시점을 관리할 수 있다.
- bind
- Subscribe보다 더 간단하게 데이터를 다룰 때 사용한다.
- dispose
- observing을 해제하는 것.
- observable을 disposeBag에 넣어두면 disposeBag이 메모리에서 해제되면 넣어둔 것이 모두 해제된다.
- Observer가 메모리 해제되었는데 observing도 해제하지 않으면 문제가 발생할 수 있다.
문제점/고민한점
- Observable Sequence란?
해결방법
- Observable Sequence에서 Sequence는 배열과 같은 Collection을 의미한다. 즉, 관찰 가능한 데이터의 집합을 의미한다. 관찰하고 싶은 데이터를 모아놓고 각각의 데이터가 변화하는 것을 관리하기 위해 필요한 개념인 것 같다.
참고