「Programminginobjective-c」の著者であるKochanからobjective-cを学んでいます。第3版。第8章「継承」では、高ちゃん氏がその方法について次のように説明しています。
-(void) setOrigin: (XYPoint *) pt
{
if (! origin)
origin = [[XYPoint alloc] init];
origin.x = pt.x;
origin.y = pt.y;
}
"このメソッドは、最初にインスタンス変数の原点がゼロ以外であるかどうかをテストします(そのテストと、使用されている論理否定演算子の使用を理解してください!)すべてのインスタンス変数が最初にゼロに設定されていることを思い出してください。オブジェクトが割り当てられると、originを含むそのインスタンス変数はゼロに設定されます。
原点がゼロの場合、setOrigin:メソッドは新しいXYPointオブジェクトを割り当てて初期化し、そのオブジェクトへの参照を原点に保存します。」
論理的な間違いはありますか?「setOrigin」メソッドは、原点がゼロ以外の場合にのみ新しいXYPointオブジェクトを割り当てませんか?