전체 글
-
Ch2. The TDD CycleRay Wenderlich/TDD 2020. 10. 4. 21:55
4 Steps TDD는 4개의 단계가 있다. 이 단계들은 보통 컬러로 표현된다. (color coded) Red: 앱의 코드를 작성하기전에 실패하는 테스트를 작성 Green: 테스트를 통과시킬 수 있는 최소한의 코드를 작성 Refactor: 앱코드와 테스트코드를 정리 (리팩토링) Repeat: 모든 피쳐들을 구현할 때까지 이 사이클을 반복 Red: Write a failing test Production코드를 작성하기 전에, 실패하는 테스트 코드를 먼저 작성하자. class CashRegisterTests: XCTestCase { func testInit_createsCashRegister() { XCTAssertNotNil(CashRegister()) } } CashRegisterTests.defaul..
-
Ch1. TDD란 무엇인가?Ray Wenderlich/TDD 2020. 10. 4. 21:53
Why use TDD? TDD는 소프트웨어가 잘 작동하고, 미래에도 계속 잘 작동 할 것을 보장해준다. 코드를 전부 작성한 뒤, 테스트 코드를 작성할 수도 있다. Alternatively, you could skip writing tests altogether and, instead, manually test your code 하지만 TDD가 이런 방법에 비해 갖는 장점은? 는 앱이 기대하는 바와 같이 동작하는 것을 보장한다. 모든 테스트가 는 아니다. 는 failable, repeatable, quick to run and maintainable 해야 한다. TDD는 아래와 같은 방법론을 통해 좋은 테스트 작성을 보장한다. 첫 번째는 failing test를 작성하는 것이다. 말 그대로, 이 과정은 테..
-
[RxSwift] Rx Observer들의 기본 스케쥴러앱등이에게 살충제를 뿌린다./Swift 2020. 9. 11. 17:15
ControlProperty는 항상 MainScheduler // ControlProperty.swift **The implementation of `ControlProperty` will ensure that sequence of values is being subscribed on main scheduler (`subscribeOn(ConcurrentMainScheduler.instance)` behavior).** Driver는 거의 MainScheduler // Driver.swift If `drive*`, `subscribe*` and `bind*` are called from background thread, it is possible that initial replay will happen ..
-
WKWebView와 쿠키의 관계에 대하여앱등이에게 살충제를 뿌린다./iOS 2020. 4. 13. 23:54
UIWebView에서 WKWebView로 많이들 넘어왔다. 쿠키관리에 있어서 둘은 큰 차이점을 갖는다.UIWebView: HTTPCookieStorage에서 공통으로 관리한다.WKWebView: 웹뷰에서 단독으로 쿠키를 관리한다. 웹뷰안에서는 새로운 세계가 펼쳐진다. 그 안에서 무수한 Request가 발생한다.앱을 사용하다가 웹뷰로 Seamless하게 이어지려면 쿠키 전달이 필수적이다. 1. WKWebView로 쿠키 전달하기NSHTTPCookieStorage에 아무리 쿠키가 많아도 WKWebView로는 쿠키가 전달되지 않는다.따라서, 필요한 쿠키를 WKWebView로 직접 전달해줘야 한다. 아래 코드를 통해 전달할 수 있다.let cookie = HTTPCookie(.....)webView.configu..
-
[RxSwift/RxCocoa] RxCocoa에서 TableView사용하는 코드를 쪼개서 이해해보자.앱등이에게 살충제를 뿌린다./Swift 2020. 3. 15. 20:48
RxCocoa-TableView사용을 위해 구글링을 해보면 아래와 같은 예제소스가 가득하다. // let items = Observable.just([ "First Item", "Second Item", "Third Item" ]) items .bind(to: tableView.rx.items) { (tableView, row, element) in let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")! cell.textLabel?.text = "\(element) @ row \(row)" return cell }.disposed(by: disposeBag) 코드를 좀 이해해보기 위해서UITableView+Rx.swift를 들어가보면 item..
-
[RxSwift/RxCocoa] Subject는 알겠는데, Relay는 뭐지?앱등이에게 살충제를 뿌린다./Swift 2020. 3. 14. 18:34
오 마이갓..Ray Wenderlich의 RxSwift를 2번이나 완독하고 프로젝트에 투입되었는데.. 아는 것보다 모르는 게 더 많다😭Ray Wenderlich에서는 RxCocoa에 대해서는 별로 다루지 않았기 때문이다. ------------------------------------------------------------------------------------------------ 일단 PublishRelay, BehaviorRelay에 대해서 살펴보자. /// BehaviorRelay is a wrapper for `BehaviorSubject`. /// /// Unlike `BehaviorSubject` it can't terminate with error or completed. publ..
-
RxSwift - MVC, MVVP with RxSwiftRay Wenderlich/RxSwift 2020. 2. 29. 22:14
MVCRxSwift는 MVVM과 엄청난 하모니를 자랑한다. 애플에서는 MVC를 주로 사용하여 훌륭한 시스템을 구축했다. 둘의 차이를 간략하게 알아보자.둘은 굉장히 가까운 사촌관계라고 볼 수도 있다. 하지만 그 둘은 분명히 다르다. 이 책에서 대부분의 예제를 MVC로 설명했다. MVC는 굉장히 직관적이고 간단한 앱을 만들 때 굉장히 유용하다.Controller는 모델과 뷰를 업데이트할 수 있는 중심역할을 하고,View는 데이터를 화면에 표현해주는 역할Model은 데이터를 Read/Write하며 저장하는 역할을 했다. MVC가 초반에는 앱을 만드는데 꽤나 좋은 패턴이다. 하지만 앱의 규모가 커질수록 많은 클래스들이 뷰도 모델도 아닌 상황이 발생한다. 자연스레 이런 애들은 컨트롤러로 때려박는다.우리가 흔히 범..
-
RxSwift - TableView, CollectionVIew를 사용해보자Ray Wenderlich/RxSwift 2020. 2. 29. 21:28
Ch.18 Table and CollectionViewsiOS앱에서 가장 많이 사용하는 UI는 UITableView, UICollectionVIew를 통해 데이터의 리스트를 표현하는 것이다. 보통은 delegate, dataSource의 콜백을 통해 데이터를 표현한다. RxSwift를 사용하면 observable sequence를 TableView, CollectionView에 표현할 수 있음을 물론이고, 코드의 양도 줄일 수 있다. UITableView, UICollectionView의 간단한 사용은 RxCocoa에 이미 포함되어 있다. 좀 더 심화적인 내용(섹션관리, 애니메이션 등)은 RxDataSources(https://github.com/RxSwiftCommunity/RxDataSources)를..