Kann ich Reaktive Erweiterungen in einem MonoTouch-Projekt verwenden?

8

Es gibt einen Port von Rx namens mono-reactive , der ein MonoTouch-Projekt enthält, aber der Autor vor zehn Tagen angekündigt gibt er das Projekt zugunsten der Open-Source-Implementierung von Microsoft auf:

  

Ich verkünde glücklich, dass ich nicht mehr an dieser Code-Basis arbeiten werde   Jetzt hat Microsoft Open-Source Reactive Extensions in Apache-Lizenz.    Ссылка

MonoDevelop hängt beim Versuch, Rx.sln im Rx-Master zu öffnen, und es gibt kein MonoTouch-Ziel Dort sowieso. Die PCL-Unterstützung ist noch nicht für MonoTouch verfügbar .

Ich frage mich, ob jemand bereits ein MonoTouch-kompatibles Projekt für Rx erstellt hat und ob es tatsächlich in der Produktion verwendet werden kann.

    
Dan Abramov 19.11.2012, 21:01
quelle

1 Antwort

8

Microsoft Rx

Ich habe selbst ein Projekt aufgesetzt und Core , Schnittstellen , Linq und PlatformServices von Rx's Codeplex .
Da gehst du:

Ссылка

Es funktioniert gut mit Referenztypen, geschweige denn mit Werttypen (siehe unten).
Leider kompiliert es nicht aufgrund von Fehler 8329 und 9087 . Es kompiliert jetzt gut.

monoreaktiv

Ich habe auch mono-reactive verwendet und es funktionierte ziemlich gut für mich. Während die Implementierung von Microsoft prägnanter und zuverlässiger erscheint, ist mono-reactive kleiner und leichter zu beheben, wenn es wirklich benötigt wird.

Sie können beides ausprobieren und sehen, was am besten für Sie funktioniert.
Glücklich beobachten!

Schadensbegrenzende Abstürze

Bei beiden Frameworks kam es oft zu Abstürzen durch AOT Einschränkungen für das Gerät. Mir wurde von Rolf von Xamarin gesagt, dass du es kannst umgehen die meisten AOT-Einschränkungen häufig, indem keine Werttypen verwendet Rx generische Typparameter.

Zum Beispiel werden IObservable<bool> Erweiterungen wahrscheinlich auf dem Gerät abstürzen, und auch IObservable<long> , aber Referenztypen sollten mit den meisten Methoden funktionieren.

In meine Version von Rx habe ich IntervalSafe Methode hinzugefügt, die Unit zurückgibt (was ich geändert habe, um ein Referenz-Typ, anstatt einer Struktur) anstelle von long , und verursacht daher nicht Dutzende von Abstürzen in der gesamten Codebasis.

Einige Rx-Methoden stürzen immer noch ab, aber ist es recht einfach, diese Abstürze zu beheben .

Siehe Throttle fix von Costo oder mein Buffer fix als Referenz.
Ich werde gerne Pull-Anfragen zusammenführen, die andere Rx-Methoden und ihre Überladungen adressieren.

    
Dan Abramov 21.11.2012, 11:04
quelle