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