使用点表示法调用自定义getter是否有副作用?
我曾经通过点符号在Objective-C中使用合成的吸气剂,即
tree.fruitnumber
Run Code Online (Sandbox Code Playgroud)
返回树上的水果数量.我不得不定制吸气剂(原因与此问题无关).我把它写成了
-(int) fruitnumber
{
//climb into tree and hand count fruits. Get n;
return n;
}
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,虚线吸气剂仍然有效.这是合法的,还是有一个令人讨厌的错误(它会影响我的所有成果(对市场?)).
点符号实际上只是用于括号表示法的语法糖.所以两条消息都是一样的:
int x = [self fruitNumber];
int x = self.fruitNumber;
Run Code Online (Sandbox Code Playgroud)
好处是,您可以@synthesize为您构建属性和setter/getter方法(当然,取决于您的属性选项),但您可以编写自己的属性,然后使用它们.
在您提供自己的setter/getter的情况下,您也可以使用该@dynamic propertyName行而不是@synthesize告诉编译器这些是由您提供的.
| 归档时间: |
|
| 查看次数: |
1231 次 |
| 最近记录: |