Kotlin でby キーワードを使ってコレクションオブジェクトを簡単に実装する
コレクションオブジェクトを実装する際、Kotlin だとby キーワードを使って実装をシンプルにすることができます。
続きを読む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
簡単です。