のクラスプロパティが既に存在するかどうかを考えてみましょう
@property (strong, nonatomic) JJNode *leftChild;
@property (strong, nonatomic) JJNode *rightChild;
アプリは既にif (parent.leftChild) { ... }
and parent.leftChild = newNode
(getter と setter の両方) を広範囲に使用しています。
NSMutableArray
しかし、クラスが将来 N 個の子をサポートできるように、左と右の子をオブジェクトで表すことができれば、クラスはより適切に機能する可能性があり、子のループはより簡単になります。
そうなる
@property (strong, nonatomic) NSMutableArray *childrenArray;
場合によっては、子を次のように繰り返すことができます。
for (JJNode *node in self.childrenArray) { ... }
しかし、この新しい配列を使用して、引き続きparent.leftChild
andを使用できるparent.leftChild = newNode
でしょうか?
parent.leftChild
異なるオブジェクトのように見えるかもしれません(JJNode *)[parent objectAtIndex: 0]
が、実際には同じものなので、それは良い習慣なのだろうか。しかし、先に進んでそれを行う場合、それを達成するための疑似プロパティを使用できますか?
ゲッターとセッターを実際に使用および変更して、実際に配列を使用できるように見え@property (strong, nonatomic) JJNode *leftChild;
ますが、2 つの追加のインスタンス変数が存在します。ivarなしでそれを行うことはできますか?または、2 つのメソッドを定義して、parent.leftChild = newNode
実際にセッター メソッドparent.leftChild
を呼び出し、ゲッター メソッドを呼び出すことはできますか?