定制吸气剂副作用

Joh*_*ith 2 objective-c ios

使用点表示法调用自定义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)

令人惊讶的是,虚线吸气剂仍然有效.这是合法的,还是有一个令人讨厌的错误(它会影响我的所有成果(对市场?)).

jbr*_*nan 6

点符号实际上只是用于括号表示法的语法糖.所以两条消息都是一样的:

int x = [self fruitNumber];
int x = self.fruitNumber;
Run Code Online (Sandbox Code Playgroud)

好处是,您可以@synthesize为您构建属性和setter/getter方法(当然,取决于您的属性选项),但您可以编写自己的属性,然后使用它们.

在您提供自己的setter/getter的情况下,您也可以使用该@dynamic propertyName行而不是@synthesize告诉编译器这些是由您提供的.

  • 如果您在实现中自己提供getter和setter,则不需要@dynamic. (2认同)