9

我正在尝试在不同 iPhone 上运行的两个相同应用程序之间进行一些图像编辑同步。我想将 NSSet * 从一个设备发送到另一个设备(我想这涉及封装在 NSData 中),然后将其解密回 NSSet,然后在 touchesMoved 类型的函数中使用它。这是可行的,还是我应该改为同步 UIImages?我担心 UIImage 同步对于实时交互会有太多延迟。

谢谢你的帮助!

4

1 回答 1

14

我认为您正在处理一组 UITouch。这将不起作用,因为 UITouch 没有实现 NSCoding(我认为)。

您需要从每个 UITouch 中提取您需要的信息,然后将其放入符合 NSCoding 的内容中。

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

然后使用游戏套件发送此数据。

另一个设备在获取数据时将其转换回一组。

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

然后,您将调用自己处理该集合所需的任何方法。由于您可能会在此处更改一些 UI 组件,因此请确保调用选择器以在主线程中运行。

此外,只有当您正在处理的触摸事件是无状态的时,这种类型的事情才会起作用,这意味着触摸之前的位置无关紧要。否则这可能会导致一些问题。提取触摸事件后发生了什么变化的想法可能会更好,然后将其发送到另一个设备,并且仅使用 UIImage 如何更改的增量更新另一个设备(换句话说,什么类型的处理具有发生在其他设备上的图像)。

于 2010-03-20T07:38:56.647 回答