2010-03-20 6 views
9

Ich versuche, eine Bildbearbeitung zwischen zwei derselben App zu synchronisieren, die auf verschiedenen iPhones läuft. Ich würde gerne ein NSSet * von einem Gerät zu einem anderen senden (was ich mir vorstelle, beinhaltet das Einkapseln in NSData), dann das Entschlüsseln dieses zurück zu einem NSSet, dann benutze es in einem touchesMoved-Typ von Funktion. Ist das machbar, oder sollte ich stattdessen an der Synchronisierung der UIImagages arbeiten? Ich befürchte, dass UIImage-Synchronisierung zu viel Latenz für Echtzeit-Interaktion haben würde.NSSet zu NSData, dann wieder raus, für GameKit?

Danke für Ihre Hilfe!

Antwort

14

Ich nehme an, Sie haben es mit einer Reihe von UITouches zu tun. Dies funktioniert nicht, da UITouch kein NSCoding implementiert (denke ich).

Sie müssen die benötigten Informationen aus jedem UITouch extrahieren und dann in etwas einfügen, das NSCoding entspricht.

NSSet * someSet = ...; 
NSData * serializedSet = [NSKeyedArchiver archivedDataWithRootObject:someSet]; 

Dann senden Sie diese Daten mit Spiel-Kit.

Das andere Gerät, wenn es Daten erhält, wandelt es zurück in ein Set.

Dann würden Sie anrufen, was immer Sie benötigen, um das Set mit sich selbst zu verarbeiten. Da Sie hier wahrscheinlich einige UI-Komponenten ändern, müssen Sie den Selektor aufrufen, damit er im Hauptthread ausgeführt wird.

Auch diese Art von Sache wird nur funktionieren, wenn die Berührungsereignisse, die Sie beschäftigen, staatenlos sind, was bedeutet, dass es keine Rolle spielt, wo die Berührung vorher war. Andernfalls kann dies zu Problemen führen. Es ist vielleicht besser, die Idee dessen, was sich nach den Berührungsereignissen geändert hat, zu extrahieren und dann an das andere Gerät zu senden und nur das andere Gerät mit den Deltas zu aktualisieren, wie sich das UIImage verändert hat (mit anderen Worten, welche Art von Verarbeitung es hat) trat auf dem Bild auf dem anderen Gerät auf).

+0

Danke für Ihre Hilfe! Gibt es eine Möglichkeit, UII-Vergleiche zu machen oder nach Deltas zwischen zwei UImages zu suchen? Würde UIImage imageWithData ein JPG-Bildformat benötigen? Mit PNG scheint sich für mich zu übergeben. Ich denke nicht, dass ich in der Lage sein werde, die Berührungen zu übermitteln, da ich mich leider auf ihren Zustand verlasse. Nochmals vielen Dank für Ihre Antwort! –