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

Pet*_*jas 9 iphone nsdata gamekit nsset iphone-sdk-3.0

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

谢谢你的帮助!

Bra*_*nar 14

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

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

NSSet * someSet = ...;
NSData * serializedSet = [NSKeyedArchiver archivedDataWithRootObject:someSet];
Run Code Online (Sandbox Code Playgroud)

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

另一个设备在获取数据时将其转换回集合.

NSData * receivedData = ....;
NSSet * set = [NSKeyedUnarchiver unarchiveObjectWithData:receivedData];
Run Code Online (Sandbox Code Playgroud)

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

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