3

在处理属性时,我对正确的约定有点困惑。我将通过一个例子来说明我的问题。因此,从下面的示例中,我知道功能上“self.loan = self.loan + 250.00;” 与“_loan = _loan + 250.00;”相同 或者不是吗?我在网上看到了许多教程,它们可能使用也可能不使用这两种方法来访问属性。那么使用_loan和self.loan到底有什么区别(我知道self.loan和[self setLoan:]是一样的)

//ClassA.h
@interface ClassA: UIViewController
@property double loan;
@end

//ClassA.m
@implementation ClassA
@synthesize loan = _loan;

-(void)doSomething{
  self.loan = self.loan + 250.00; //Exhibit A
  _loan = _loan + 250.00; // Exhibit B 
} 
4

3 回答 3

5

_loan是一个变量,给它赋值并没有特别的副作用。

self.loan = self.loan + 250.00本质上与编写[self setLoan:[self loan] + 250.00]方法相同,调用的方法可能会做其他事情,而不是简单地设置或获取变量的值。这些方法所做的额外事情取决于您是编写它们的自定义版本(setter 和 getter)还是使用@synthesize它们来创建它们,如果您使用,则取决于您在声明@synthesize中应用的属性。@property

于 2012-06-04T22:28:59.950 回答
0

当你写出@synthesize 贷款 = _loan; 它基本上是简写,说你正在合成的是一个私人成员,它类似于下面的详细编码方式:

//ClassA.h
@interface ClassA: UIViewController {
    double _loan;
}

@property double loan;
@end

//ClassA.m
@implementation ClassA
@synthesize loan = _loan;

以这种方式写出它是一种很好的做法,这样您就可以在类代码中清楚地使用“_”来表示您的私有成员,但是在将其作为属性公开给不应显示的其他类时。

于 2012-06-04T22:30:31.527 回答
-1

访问属性时,永远不要使用对变量的直接引用。始终在代码中使用 self.property。

如果您使用 _property,则不会使用您的 getter 和 setter。在这种情况下,您只是在浪费 @synthesize 使用。

self.loan = self.loan + 250.00; //展览A

这应该是正确的做法。

于 2012-06-05T01:54:31.723 回答