NSSet到NSData,然后再次退出,为GameKit?

时间:2010-03-20 07:29:39

标签: iphone iphone-sdk-3.0 nsdata gamekit nsset

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:14)

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

您需要从每个UITouch中提取出所需的信息,然后将其添加到符合NSCoding的内容中。

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

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

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

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

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

此外,只有当你正在处理的触摸事件是无状态时,这种类型的东西才有效,这意味着触摸之前的位置并不重要。否则,这可能会导致一些问题。最好在触摸事件之后提取出已经发生变化的想法,然后将其发送到其他设备,并且只更新其他设备,其中包含UIImage如何变化的增量(换句话说,处理的是什么类型的处理)发生在另一台设备上的图像上。)