设置值 - 实例变量

时间:2013-07-10 14:41:25

标签: objective-c instance-variables

我正在学习Objectice-c,我注意到我可以用两种方式设置instace变量的值

@interface Foo : NSObject
  @property int x;
  -(void)print;
@end

@implementation Foo

 -(void)print
 {
   [self setX:10] // first way
   x = 10; // second way 
 }
@end

我个人更喜欢第一种方法,因为它看起来更清晰。可以在我的项目中使用第一种方法吗?

1 个答案:

答案 0 :(得分:1)

您可以通过两种方式访问​​变量:

使用setter或getters with self。 :

self.x = 10;
[self setX:10]

两者都是等价的,但Apple建议您自己使用setter。

或直接访问ivar。 ivar名称取决于你如何合成它。如果你使用默认的合成(或者你自己不合成),就像这样:

_x = 10;

在你的例子中,第二种方式是直接访问ivar,第一种方法是使用setter(与self.x = 10相同),

建议使用第一种方法(使用self或使用setter),因为它会处理内存问题,释放以前的值,如果你需要,可以保护线程等等。使用self更方便。而不是打电话给二传手。

当您使用 init 方法时,只使用ivar,对于其余方法,请使用setter。