1

私は現在、マルチプレイヤーゲームのネットワーク側を実装している最中です。これまでのところ、オブジェクトをNSDataにシリアル化してクラスを送信しています。問題は、クラス内に同じタイプの他のオブジェクトを参照するリンクリストがあるという事実にあります。すべてのオブジェクトを転送し、initWithCoderを使用して受信側でデコードした場合:(NSCoder *)デコーダーは、クラス内のオブジェクトが引き続き正しい参照を保持しますか?そうでない場合、誰もがこの問題のクリーンな解決策を推奨できますか?

4

1 に答える 1

2

NSCoder はこれで問題なく動作するはずです。エンコードするときは、リストの先頭をエンコードし、リスト構造自体を使用して残りをガイドします。リストには、データの文字列と単純な前方リンクがあるとします。頭をエンコードするだけです...

// in ListNode.m

- (void)encodeWithCoder:(NSCoder*)encoder {

    [encoder encodeObject:self.theString forKey:@"thisIsMyListsData"];
    if (self.nextNode) {
        [encoder encodeObject:self.nextNode forKey:@"nextNode"];
    }
}
于 2012-05-02T02:08:01.350 に答える