在ObjectiveC类中使用变量名中的别名

时间:2015-11-19 23:13:10

标签: objective-c

我有一个名为Node

的类
@interface Node : NSObject
{
    Node* _prev;
    Node* _next;
    id    _data;
}

我希望用于双重链接列表二进制搜索树

但在二进制搜索树中,我想更改 _prev _next 以使用 _left _right

我想知道我是否可以为 _prev 使用别名 _left ,为 _next 使用 _right 我的Node类可用于双链接列表二进制搜索树

任何建议都将不胜感激!

1 个答案:

答案 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,可以避免(自动)合成实例变量,这些变量只会被闲置。