我已经阅读了所有可以在stackoverflow和其他地方找到的帖子。我理解下划线约定的目的是区分ivar本身的使用和它的属性,但如果一个人对变量名称小心,我不确定实际差异是什么。我有两个问题。
是否有一个我无法使用访问者的地方,并且有来使用_var?
换句话说,有一个我不能使用的地方:
self.var
[self var]
self.var=foo
[self setVar:foo]
第二,有人可以描述一种情况,不使用下划线约定会让我遇到麻烦,但是下划线约定会让我不能参与?
如果这个问题在其他地方得到解答,我很抱歉;我没有找到它或者我不理解它!
答案 0 :(得分:0)
-(void) setAlive:(BOOL) isItOrNot {
if(isItOrNot) {
[self setHPs:self.characterClass.baseHPs];
[self.army addCharacterWithKey:self.key];
} else {
[self setHPs:0];
[self.army removeCharacterWithKey:self.key];
}
alive_=isItOrNot;
}
-(BOOL) alive {
return alive_;
}
作为示例...如果您为保留的iVar执行此操作,请小心处理参数等于当前iVar的条件:)