1

假设是否已经有类属性

@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.leftChildandparent.leftChild = newNode吗?

我想知道这是否是一种好习惯,因为它看起来像是不同parent.leftChild(JJNode *)[parent objectAtIndex: 0]对象,但实际上是同一件事。但是如果我们继续做下去,我们可以拥有伪属性来实现它吗?

看起来我们可以实际使用@property (strong, nonatomic) JJNode *leftChild;和更改 getter 和 setter 以实际使用数组,但是会有两个额外的实例变量。没有ivars可以吗?或者我们可以定义 2 个方法,以便parent.leftChild = newNode实际调用一些 setter 方法,并parent.leftChild调用一个 getter?

4

1 回答 1

4

您的属性不仅限于合成的属性 - 事实上,它们只不过是遵循特定命名约定的一对方法。

您可以删除 and 的说明@synthesize,并将它们替换为获取/设置包含节点的第一个和第二个元素的方法,以防有两个以上的节点。leftChildrightChildNSArray

于 2012-09-11T00:11:21.113 回答