問題タブ [reactive-cocoa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
6007 参照

reactive-cocoa - NSMutableArray プッシュ/ポップを使用した ReactiveCocoa の例?

誰かが ReactiveCocoa 抽象化を使用して次のようなことを達成する 1 行の例を提供できますか?

Mantle https://github.com/ReactiveCocoa/ReactiveCocoa/pull/130を優先して NSArray の一部の拡張機能が削除されたようですが、NSArray 操作の簡単な例はまだ見つかりません。

0 投票する
1 に答える
329 参照

objective-c - ReactiveCocoa で Haskell のブレークを書く

Haskell のような ReactiveCocoa 関数が必要ですbreak

基本的に、最初のコンポーネントが一致しなかったすべてのアイテムであり、最初の一致の前にあるタプルを返します。2 番目のコンポーネントは、一致する項目とリストの末尾 (一致するかどうかに関係なく) です。

ReactiveCocoa への直訳は

明らかに動作しますが、 の再帰によりスタック オーバーフローが発生しますbreakSequence:seq withBlock:

ReactiveCocoa でこの機能を正常に実装するにはどうすればよいでしょうか?

ありがとう :-)

0 投票する
2 に答える
2362 参照

cocoa-touch - ReactiveCocoa で promise パターンを実装するにはどうすればよいですか?

私は、EmberJS の JS バックグラウンドから来た iOS 開発の初心者です。EmberJS アプリを iOS アプリに移植したいと考えています。したがって、iOS アプリで同様の構造を使用したいと考えています。EmberJS は Promise を多用するため、iOS 用に似たものを探していたところ、ReactiveCocoa にたどり着きました。ReactiveCocoa の紹介で、このフレームワークを使用して Promises を実装できると言われています。やってみたのですが、うまくいきません。私は非常に単純な例から始めたかった:

  • 非同期ネットワーク リクエストを作成します (UITableViewController を満たすため)。このメソッドから promise を返します。
  • この promise にサブスクライブし、終了したら TableView をリロードします。

データが正常にロードされた後、いくつかのことを実行する必要があるため、この方法で実行したいと考えています。私のアプローチは基本的に機能しますが、次の問題が発生しています。

  • リクエストが終了した直後に TableView がリロードされません。
  • subscribeCompletedリクエストが終了した直後にログ ステートメントが表示されます。ただし、TableView は空白のままです。
  • TableView は、数秒待ってからデータをロードします。
  • ログ出力を見た後に TableView のスクロールを開始すると、TableView が突然読み込まれます。

バックグラウンドスレッドでデータをフェッチしているため、これが発生する可能性があると思われます。promise ( subscribeCompleted) の解決はバックグラウンド スレッドでも発生する可能性があり、Cocoa Touch がこれを気に入らない可能性があると思います。私は正しいですか?しかし、これが事実である場合、どのように約束を実装する必要がありますか?

ReactiveCocoa を使い始めるのを手伝ってくれることを願っています。どうも!:-)

更新:reloadData toを a で ラップすることでなんとか修正できましたdispatch_async(dispatch_get_main_queue(), ^{...が、これが最善の方法なのか、ReactiveCocoa によって推奨されているのかはまだわかりません。だから私はまだいくつかの答えを聞きたいと思っています:-)

0 投票する
1 に答える
1529 参照

objective-c - 2 つの RACChannelTerminal をバインドするにはどうすればよいですか?

一緒に同期したい 2 つの NSTextView があります。ReactiveCocoaを使用して、cocoa バインディングから RACChannelTerminals を生成しています。

RACChannel当然、次のステップは を作成し、両方の端子を接続するだけだと思いました。

しかし、コンパイラは nope: と言いますAssignment to read only property。これは簡単なように思えますが、ここで何が間違っているのでしょうか? 自分の端末で RACChannel のようなバインディングを作成するにはどうすればよいですか?

0 投票する
1 に答える
280 参照

objective-c - コンビネーション ロック ロジック - リアクティブ ココア

Reactive Cocoa はまったくの初心者です。ドキュメントといくつかのチュートリアルに時間を費やした後、比較的単純なことをしようとしているときにトリックを見逃しているに違いないと思います(願っています!)。

演習として、4 桁のコンビネーション ロックのロジックを記述しようとしています。

ユーザーはスクロールホイールを使用して入力し、1 番が正しい場合は 2 番しか入力できず、2 番が選択されている場合は 3 番しか入力できません。それらが等しい場合、システムを進めて、パスの組み合わせの 2 桁目と照合します。

ユーザー入力から RACSignal を作成する方法はわかりますが、RACSequence シーケンスを ...filter:?...combineLatest: で進めるために、「正しい」数字と照合するためにどのパターンを使用すればよいかわかりません。 ?

私はこれに頭を悩ませようとしているだけなので、コード例は高く評価されますが、正しい方向への一般的な概念的なポインターは素晴らしいでしょう.

0 投票する
1 に答える
2854 参照

objective-c - 限られた数のスレッドで、並行して ReactiveCocoa シグナルをサブスクライブする

次のように作成されたシグナルをサブスクライブします。

シグナルを並行し-flatten:てサブスクライブしたい。n「内部信号」を試し-startLazilyWithScheduler:block:てみ[RACScheduler scheduler]ましたが、コンピューターが停止します。Instrumentsでは、シグナルごとに新しいスレッドを作成しているようです。

このコードの以前のバージョンは、NSOperations として NSOperationQueue に追加され、n操作を並行して実行するように設定されています。それは機能しますが、RAC を使用して簡単にフォローできるようにすることができます。

内部シグナルがそれぞれ同じスレッド-flatten: nで実行されるように、シグナルのシグナルから一度にシグナルを送信するにはどうすればよいですか?n

=====================================

更新:私は間違ったツリーを吠えていました。私のパフォーマンスの問題は、物理 RAM の不足によるものでした。一部のオブジェクトの寿命が長すぎて、メモリの問題が発生したと思います。RAC をより頻繁に使用するようにリファクタリングしているときに、ある時点でメモリ使用量の問題を偶然解決しました。人々が私のコードを見ることで恩恵を受けるかどうかはわかりませんが、ここにあります:

私はこのコードで外側の信号を消費することから抜け出しました:

代わりに、より多くの RAC 操作を使用するには (同じクラスの他の命令型コードも置き換えます):

バックグラウンド スケジューラでコールド シグナルを返すように作業メソッドを更新すると、flatten:問題なく複数のシグナルが一度に実行されます。