목록Swift (15)
study record
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/M8HUC/btrLkawkucG/CTungnJck47jKvPm9CYzCK/img.png)
map Observable을 통해서 방출되는 모든 요소에 대해서 중간에 계산을 하거나 타입을 변경 시켜주고 싶을 때 간편하게 처리한다. 즉, 데이터 가공이 필요할 때 map을 사용한다. observable() .map{ String($0) } .subscribe(onNext: { grade in print("\\(grade)") }).disposed(by: disposeBag) filter 주로 Collection타입에서 사용되는 filter, 이름 그대로 무언가를 걸러주는 역할을 한다. Observable에서 방출되는 요소를 조건에 맞게 걸러서 구독자에게 전달해주고 싶을 때 사용한다. phoneNumberObservable() .filter { phoneNumber in return phoneNumbe..
Reactive Programming 등장 배경 빅데이터: 빅데이터는 보통 PB(페타바이트) 단위로 구성되고, 거기에 매일 증가해버린다. 다양한 환경: 비슷비슷한 디바이스가 아니라 작은 모바일 디바이스부터 수천 개의 멀티 코어 프로세서로 실행되는 클라우드 클러스터까지 너무도 다양한 환경에 애플리케이션이 배포됨. 사용 패턴: 사용자는 1년 내내 항상 서비스를 사용할 수 있고, ms 단위의 응답시간을 기대한다. 리액티브 프로그래밍에서는 다양한 소스에서 들어오는 데이터의 흐름(스트림)을 비동기적으로 합쳐서 이런 문제를 해결한다. Reactive Programming이란? 리액티브 프로그래밍은 비동기적 데이터의 흐름과 변화의 전달에 관한 프로그래밍 패러다임이다. 리액티브 프로그램은 주변의 환경과 끊임없이 상호작..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/coifwQ/btrx9Bnqasy/ghkiKdGWJbNuV3yKkiVzY0/img.png)
UIView에는 layer 프로퍼티가 있다. layer는 CALayer의 객체이다. CALayer는 CoreAnimation Layer를 뜻한다. UIView는 하나의 CALayer(Root)만 가지고 있다. CALayer(Root)는 SubLayer를 여러 개 둘 수 있다. UIView의 SubView는 UIView의 CALayer(Root) 위에 얹혀지는 것이다. 뷰를 여러 개 쌓아서 표현하는 것 보다 레이어를 쌓아서 만드는게 퍼포먼스 측면에서 훨씬 가볍다. iOS 개발에서 보여지는 부분의 기본을 구성하는 UIView는 사실 그려지는 것이 UIView 자체가 아니라 내부 layer에 그려지는 것이다. 기본적으로 CALayer로 구성되어 있는 Layer는 그려지는 컨텐츠에 대한 캐시를 사용하며, 이는 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/nN7B7/btrwgjHD9W0/HV7RLXqCtQB2x210WdBlZ0/img.png)
dequeueReusableCell func dequeueReusableCell(withIdentifier identifier: String, for indexPath: IndexPath) -> UITableViewCell 파라미터로 2개를 받고, UITableViewCell을 반환한다. 지정된 재사용 식별자에 대한 재사용 가능한 테이블뷰 셀 객체를 반환하고 이를 테이블에 추가한다. identifier는 재사용할 객체를 나타내는 문자열로, 재사용할 객체를 나타내주는 것이다. for는 indexPath를 받는다. 셀의 위치를 지정하는 것이 indexPath로서, 데이터 소스는 셀에 대한 요청이 있을 때 인덱스 경로를 사용하여 셀의 위치를 기반으로 추가구성한다. - 왜 사용하는가? 만 개 이상의 많은 테이블..