使用点语法来调用方法可以吗?

我试图学习如何开发使用目标C,我读了这本书,使用点语法(obj.var)从类访问伊娃你必须实现这些variables使用@properties,但是我试过使用这个没有为这些variables定义@properties的访问types,它似乎正常工作。

这种访问是如何工作的? 像在Java中一样使用它是一个好习惯吗?

例:

ComplexNumber *c1 = [[ComplexNumber alloc]init]; c1.realPart = 3; c1.imaginaryPart = 2; 

ComplexNumber的方法:

 - (double)modulus; -(void)setRadius:(double)aRadius phase:(double)aPhase; -(void)print; -(double)realPart; -(double)imaginaryPart; -(void)setRealPart:(double)value; -(void)setImaginaryPart:(double)value; 

没有它不是一个好的做法,你在技术上可以使用点语法访问零参数的方法,但现在Xcode会警告你这样做。 这是违反苹果的编码准则。

括号语法应该用于调用方法。

属性只是类实现某些方法的承诺。 点语法简单地转换为调用具有适当名称的方法,具体取决于代码的作用:

 b = a.foo; // becomes 'b = [a foo];' a.foo = b; // becomes '[a setFoo:b];' 

所以,即使这些方法不是属性,也可以使用点语法来调用方法。 如果方法表示的是像属性那样工作的东西,比如访问数组的length方法,那么可以这样sorting:

 len = myArray.length // becomes 'len = [myArray length];' 

但主要是你不应该这样做。 这需要一些属于财产的东西,并使其看起来像一个财产。 这可能会起作用,但是会让看着代码的人(包括未来的你)感到困惑。 你绝对不应该用它来调用有副作用的方法,因为属性访问器不会有副作用。