RxJava での購読解除はuber のAutoDisposeを使ったほうが良さそう、という話
現在、仕事場のAndroid のコードでは2種類の購読解除方法を使っている
1つめは、bindToLifeCycle、bindUntilEvent を使う方法
single
.compose(bindToLifeCycle())
...
もう一つは、Autodispose を使う方法
https://github.com/uber/AutoDispose
single .as(AutoDispose.autoDisposable(RxLifecycleInterop.from(this).requestScope())) ...
※ 実際にはPresenter で購読開始するので、view を引数に渡している事が多い。
続きを読むSwift でprivate なプロパティを書き換える
小ネタです。
ユニットテストを書いているとき、テスト対象のprivate なインスタンス変数を書き換えたいと思うことがあります。
標準のリフレクションだと結構面倒くさいことになります。
詳しくは、https://stackoverflow.com/questions/31589405/using-reflection-to-set-object-properties-without-using-setvalue-forkey をご参照ください。
上記のStackoverflow でも紹介されていますが、Runtime というライブラリを使うと簡単になるみたいです。
class Hoge { private var flag: Bool = false func printFlag() { print(flag) } } func testHoge() { var h = Hoge() let info = try! typeInfo(of: Hoge.self) let property = try! info.property(named: "flag") try! property.set(value: true, on: &h) h.printFlag() }
=> true
簡単です。
クロスサイト・スクリプティング(XSS)
【Alamofire 実践】Router の使い方とその問題点、URLRequestConvertible について
今回はAlamofire の実践編ということで、もう少し踏み込んだAlamofire の使い方を書いていこうと思います。
前回記事 : 【Swift】Alamofire を使って色んなリクエストを投げてみる - yujiro's blog
Alamofire を実際に使う際、エンドポイントの管理にはURLRequestConvertible というprotocolを継承した、Router という名前の enum を作って管理することが多いです。
このRouter はどう使うんでしょうか
続きを読む