thi*_*cfb 2 variables cocoa-touch objective-c ios
我正在尝试学习如何使用目标C进行开发,并且我在本书中读到,要使用点语法(obj.var)从类中访问ivar,您必须使用@properties实现这些变量,但是我已经尝试过使用它没有为这些变量定义@properties的访问类型,它似乎正常工作.
这种访问如何运作?像Java一样使用它是一个好习惯吗?
例:
ComplexNumber *c1 = [[ComplexNumber alloc]init];
c1.realPart = 3;
c1.imaginaryPart = 2;
Run Code Online (Sandbox Code Playgroud)
ComplexNumber的方法:
- (double)modulus;
-(void)setRadius:(double)aRadius phase:(double)aPhase;
-(void)print;
-(double)realPart;
-(double)imaginaryPart;
-(void)setRealPart:(double)value;
-(void)setImaginaryPart:(double)value;
Run Code Online (Sandbox Code Playgroud)
属性只是该类实现某些方法的承诺.点语法简单地转换为对具有适当名称的方法的调用,具体取决于代码的作用:
b = a.foo; // becomes 'b = [a foo];'
a.foo = b; // becomes '[a setFoo:b];'
Run Code Online (Sandbox Code Playgroud)
因此,即使这些方法不是属性,您也可以使用点语法来调用方法.如果方法表示像属性一样的东西,例如访问length数组的方法,那么这可能是好的:
len = myArray.length // becomes 'len = [myArray length];'
Run Code Online (Sandbox Code Playgroud)
但大多数情况下你不应该这样做.它需要的东西不是属性,使它看起来像一个属性.它可能会起作用,但它会让看到代码的人(包括未来的人)感到困惑.您绝对不应该使用它来调用具有副作用的方法,因为预期属性访问器不会产生副作用.
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |