Objective c 使用点语法时,是否可以安全地假定忽略了前导下划线

Objective c 使用点语法时,是否可以安全地假定忽略了前导下划线,objective-c,syntax,underscores,Objective C,Syntax,Underscores,快速提问。我参加过的所有讲授objective C的课程都会在实例变量前面加下划线。他们还解释说,当使用点语法时,访问实例变量时不必包含前导下划线。他们从来没有明确说过,在目标C中使用点语法总是会忽略前导下划线,这就是我的问题。点语法是否总是忽略目标C中的前导下划线 为了消除混淆,如果我有一个类Item,并且它有一个名为*\u itemName,我可以稍后(主要)使用点语法设置该变量,并忽略带Item.itemName=something的前导下划线。 当我第一次开始使用Obj-C时,我会认为我

快速提问。我参加过的所有讲授objective C的课程都会在实例变量前面加下划线。他们还解释说,当使用点语法时,访问实例变量时不必包含前导下划线。他们从来没有明确说过,在目标C中使用点语法总是会忽略前导下划线,这就是我的问题。点语法是否总是忽略目标C中的前导下划线

为了消除混淆,如果我有一个类
Item
,并且它有一个名为
*\u itemName
,我可以稍后(主要)使用点语法设置该变量,并忽略带
Item.itemName=something的前导下划线。

当我第一次开始使用Obj-C时,我会认为我必须设置
\u itemName
,包括带有
项的下划线。\u itemName=something

那么点语法是否会忽略前导下划线呢?

“点语法”实际上不是访问实例变量的快捷方式,而是访问属性*

属性可以从实例变量保存/加载数据,但也可以从大量其他变量派生数据。它们的目的是作为一个抽象层&间接层


*从技术上讲,您可以将它用于任何看起来像属性方法的方法。。。但这通常是非常令人沮丧的。不要那样做

你说的忽视是什么意思?直接ivar访问和财产访问是两种不同但相关的东西。ivar和财产有不同的名称。@Josh Caswell我编辑我的帖子是为了更好地解释我的问题我编辑我的问题是为了澄清我想问的问题。虽然我理解这是令人沮丧的,我也不打算这样做,但我只是对dot是否“应该”像它那样忽略前导下划线感到困惑。你的星号有点不清楚。大多数在概念上看起来像属性的方法都是属性。我想你的意思是,getter语法可以用于任何零参数方法——即使它不是getter——而setter语法可以用于任何单参数方法,即使它不是setter。只要它们是事实上的属性,就可以将其用于非声明属性的事物。@user1806716:我认为您不理解Kitsune的答案。它没有忽略任何下划线。它调用
itemName
属性的访问器,该属性访问
\u itemName
实例变量。任何地方都不会忽略下划线。