我目前正在实现我的多人游戏的网络端。到目前为止,我通过将我的对象序列化为 NSData 来发送类。麻烦在于我的类中有链接列表引用相同类型的其他对象。如果我使用 initWithCoder: (NSCoder *) 解码器传输所有对象并在接收端进行解码,类中的对象是否仍保存正确的引用?如果没有,任何人都可以推荐解决此问题的干净解决方案吗?
NSCoder 应该可以正常工作。 编码时,对列表的头部进行编码,并使用列表结构本身来指导其余部分。 假设列表有一个用于其数据的字符串和一个简单的转发链接。 只需对头部进行编码...
// in ListNode.m
- (void)encodeWithCoder:(NSCoder*)encoder {
[encoder encodeObject:self.theString forKey:@"thisIsMyListsData"];
if (self.nextNode) {
[encoder encodeObject:self.nextNode forKey:@"nextNode"];
}
}