我有一个名为Node
的类@interface Node : NSObject
{
Node* _prev;
Node* _next;
id _data;
}
我希望用于双重链接列表和二进制搜索树。
但在二进制搜索树中,我想更改 _prev 和 _next 以使用 _left 和 _right ,
我想知道我是否可以为 _prev 使用别名 _left ,为 _next 使用 _right 我的Node类可用于双链接列表和二进制搜索树。
任何建议都将不胜感激!
答案 0 :(得分:0)
您应该将这些字段定义为属性,而不是实例变量。
@interface Node : NSObject
@property (nonatomic, strong) Node *prev;
@property (nonatomic, strong) Node *next;
@property (nonatomic, strong) Node *left;
@property (nonatomic, strong) Node *right;
@property (nonatomic, strong) id data;
@end
然后,在您的实现中,您实现了左右自定义的getter和setter,就像这样......
- (Node *)left {
return _prev;
}
- (void)setLeft:(Node *)left {
_prev = left;
}
- (Node *)right {
return _next;
}
- (void)setRight:(Node *)right {
_next = right;
}
通过定义左右两侧的getter和setter,可以避免(自动)合成实例变量,这些变量只会被闲置。