使用点语法来调用方法可以吗?
我试图学习如何开发使用目标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];'
但主要是你不应该这样做。 这需要一些不属于财产的东西,并使其看起来像一个财产。 这可能会起作用,但是会让看着代码的人(包括未来的你)感到困惑。 你绝对不应该用它来调用有副作用的方法,因为属性访问器不会有副作用。