私は、アプリケーションプログラマです。私はJavaでいくつかのAndroidアプリを、React/ReduxではSPAを書いた。最近、私はAndroid開発用にKotlinを使い始め、Swiftと一緒にiOSワールドに入りました。静的コレクションに関数を格納すると、システムにどのように影響しますか?
リアクトとの私の経験はちょっとクールでした。私は反応性の概念が好きだった。そして、私はこのコンセプトを自分のモバイルアプリに適用するのがいいと思った。私は何とかうまく教育目的のために、自分の道を見つけたい、Rx librariesの束がある知っているが、むしろそれをGradleの-cocoapods同期-使用より。私はそれに抵抗することができませんでした。だから、数時間の研究の後、私はこの考えを思いついた。
するのは、私は、サーバーからいくつかのJSON配列を取得していましょう:
は、ここでのことです。 、UIに続い
var onItemsChanged: MutableList<() -> Unit> = mutableListOf()
var items: List<Data>? by Delegates.observable(null) { _: KProperty<*>, _:List<Data>?, _: List<Data>? ->
for(callback in onItemsChanged)
callback()
} /* or didSet{} in Swift */
:私は解析し、静的クラス(またはobject in Kotlin)に格納し、Iは
AppContextをそれを呼び出して、それが関数の配列、及びこのようなデータ自体を有しています価値交換イベントに耳を傾けたいときはいつでも書きます。
AppContext.onItemsChanged.add { updateUI() }
/* and of course UI references AppContext.items */
これは私が思っていたほとんどすべてのものです。しかし、私は考えるべきことがいくつかあると思います。
私の質問は:ガベージCollecterが、UIオブジェクト(たとえば断片)を収集
何場合にラムダコールバック関数がどのgc'dオブジェクトからonItemsChanged配列に追加した場合、次に何が起こるのだろうか?
そして、あなたはこのアイデアについてどう思いますか?あなたが私の場合はどうしますか?
感謝を "ちょうどRxSomethingを使用し、" 言わないでください! Javaでは
スウィフトについて話している場合、ガベージコレクタはありません。 – ColGraff
KickstarterはKotlinとSwiftでアプリケーションをビルドし、反応性ライブラリを使用しています(どちらか分かりません)。両方のコードセットはオープンソースであるため、そのコードの内容を見ることができます。 –