2

NSCoding を実装するクラスが与えられた場合、 copyWithZone: の実装をこのパターンを使用して実装してはならない理由はありますか?

-(instancetype)copyWithZone:(NSZone *)zone{
    return [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:self]];
}
4

1 に答える 1

1

ただの効率 — エンコード/デコードのコストと総メモリ フットプリント。

4 つの不変インスタンス変数を持つオブジェクトがあるとします。カスタムを実装するcopy場合は、そのオブジェクトの追加のインスタンスを 1 つ割り当て、4 つのインスタンス変数すべての所有権を与えます。

エンコードおよびデコードすると、双方向のシリアル化の処理コストが発生し、各インスタンス変数の新しいコピーが作成されます。

于 2014-10-15T02:09:47.123 に答える