2010-03-20 11 views
9

Estoy tratando de hacer una sincronización de edición de imágenes entre dos de la misma aplicación que se ejecuta en diferentes iPhones. Me gustaría enviar un NSSet * de un dispositivo a otro (lo que imagino implica encapsular en NSData) luego descifrarlo de nuevo a un NSSet, y luego usarlo en un tipo de función touchesMoved. ¿Es esto factible, o debo trabajar en la sincronización de los UIImages? Me preocupa que la sincronización de UIImage tenga demasiada latencia para la interacción en tiempo real.¿NSSet a NSData, luego vuelve a salir, para GameKit?

Gracias por su ayuda!

Respuesta

14

Supongo que se trata de un conjunto de UITouchs. Esto no funcionará ya que UITouch no implementa NSCoding (creo).

Deberá extraer la información que necesita de cada UITouch y luego ponerla en algo que se ajuste a NSCoding.

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

A continuación, envíe esta información usando el kit de juegos.

El otro dispositivo, cuando obtiene datos, lo convierte de nuevo a un conjunto.

NSData * receivedData = ....; 
NSSet * set = [NSKeyedUnarchiver unarchiveObjectWithData:receivedData]; 

Entonces usted podría llamar a cualquier método que necesite para procesar el conjunto consigo mismo. Como es probable que cambie aquí algunos componentes de la interfaz de usuario, asegúrese de llamar al selector para que se ejecute en el hilo principal.

Además, este tipo de cosas solo funcionará si los eventos táctiles que está tratando son sin estado, lo que significa que no importa dónde estaba antes el tacto. De lo contrario, esto puede causar algunos problemas. Puede ser mejor extraer la idea de lo que ha cambiado después de los eventos táctiles, y luego enviar esto al otro dispositivo y solo actualizar el otro dispositivo con los deltas de cómo ha cambiado el UIImage (en otras palabras, qué tipo de procesamiento tiene ocurrió a la imagen en el otro dispositivo).

+0

¡Gracias por su ayuda! ¿Hay alguna manera de hacer comparaciones con UIImage o verificar deltas entre dos UIImages? Además, ¿Ullmage imageWithData necesitaría un formato de imagen JPG para funcionar? Usar PNG parece vomitar para mí. No creo que pueda transmitir los toques, ya que desafortunadamente confío en su estado. ¡Gracias de nuevo por su respuesta! –