我注意到大多数Objective-C编码器self->ivar在直接访问实例变量时从不使用语法.我看到的大多数示例代码只引用了实例变量而没有self->.我认为引用实例变量而不清楚它是一个实例变量而不仅仅是当前范围的变量是相当混乱的.
我觉得我想写下这样的东西:
- (void)dealloc {
[self->someVar release];
[self->anotherVar release];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
要么
- (void)setVar:(Foo *)newVar {
[self->var autorelease];
self->var = [newVar retain];
}
Run Code Online (Sandbox Code Playgroud)
在没有使用访问器进行封装的情况下甚至不应该访问我们的实例变量的情况并不是很多,但有时我们需要在dealloc或者自定义getter和setter中.
这样做我是一个坏人/程序员吗?是不是有一些很好的理由不写这样的代码?因为这样做感觉非常好.
Chuck是正确的,因为没有技术上的理由你不应该这样写,除非你用局部变量遮蔽ivars,这通常是一个坏主意.然而,可以说,省略self->在风格上更清晰,并且它肯定会导致更简洁的代码.就个人而言,我会发现它self->会分散注意力(特别是如果代码设计得很好并且变量名称很好)但是如果它让事情更容易理解,那么一定要做.请注意,如果您向其他Objective-C程序员展示您的代码,他们可能会有一个相互矛盾的意见,所以有一个思考皮肤是好的.此外,大多数程序员发现他们对代码"感觉良好"的看法会随着时间的推移和经验而发生变化,而这些意见往往随着年龄的增长而变得圆满.:-)
| 归档时间: |
|
| 查看次数: |
3000 次 |
| 最近记录: |