直接访问实例变量时使用 self->ivar

2023-11-21

我注意到大多数 Objective-C 程序员从不使用self->ivar直接访问实例变量时的语法。我看到的大多数示例代码只是引用实例变量而没有self->。我认为引用实例变量而不明确它是实例变量而不仅仅是当前范围的变量是相当令人困惑的。

我觉得我想写一些东西,比如:

- (void)dealloc {
    [self->someVar release];
    [self->anotherVar release];
    [super dealloc];
}

or

- (void)setVar:(Foo *)newVar {
    [self->var autorelease];
    self->var = [newVar retain];
}

在很多情况下,我们甚至应该在不使用访问器进行封装​​的情况下访问实例变量,但有时我们需要这样做,例如在 dealloc 或自定义 getter 和 setter 中。

我这样做是不是一个坏人/程序员?有什么真正好的理由不编写这样的代码吗?因为这样做的感觉真的很好。


查克是正确的,因为没有技术的这是你不应该这样写的原因,除非你用局部变量来隐藏 ivars,这通常是一个坏主意。然而,有争议的是,省略self->风格上更清晰,并且肯定会导致代码更简洁。就我个人而言,我会找到self->分散注意力(特别是如果代码设计良好且变量命名良好),但如果它使您更容易理解,请务必这样做。请注意,如果您向其他 Objective-C 程序员展示您的代码,他们可能会有相互冲突的意见,因此最好有一个思考皮肤。此外,大多数程序员发现,他们对代码“感觉良好”的看法会随着时间和经验的变化而变化,而且这些观点往往会随着年龄的增长而变得更加成熟。 :-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

直接访问实例变量时使用 self->ivar 的相关文章

随机推荐