私は別のクラスへのポインタを含むobjective-cクラスを持っています。私はこのクラスのインスタンスをNSCoder経由でアーカイブします:NSCoder - ポインタをアーカイブしますか?
@interface Barn
{
int m_numHorses;
// Barn does not allocate this instance, it just points to it.
Farmer* m_pFarmer;
}
@end
...
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeInt:m_numHorses forKey:@"numHorses"];
[encoder encode?:m_pFarmer forKey:@"pFarmer"];
}
- (void) setPointer:(Farmer*)pFarmer
{
m_pFarmer = pFarmer;
}
どのようにm_pFarmerポインタをアーカイブしますか?それは私にとっては意味がありませんが、それはすべてのアドレスなので、デシリアライズ時に後でリンクを復元する方法を知っているようにNSCoderがディスクにシリアル化できるものは何もわかりません。
ああ申し訳ありませんが、私はもっと明確にすべきです - m_pFarmerは単にシステム内の他の場所に割り当てられたFarmerオブジェクトへのポインタです - Barnクラスインスタンスは所有していません - –
このコードの外にFarmerオブジェクトを格納していますか?あなたがそうでないなら、再帰的にそれを保存することは意味があります。 – pgb