3

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

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

@implementation Foo

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

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

4

1 回答 1

1

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

将 setter 或 getter 与 self 一起使用。:

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

两者是等效的,但 Apple 建议您将 setter 与 self 一起使用。

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

_x = 10;

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

推荐使用第一种方法(使用 self 或使用 setter),因为它可以解决内存问题、释放以前的值、根据需要保护线程等。而且使用 self 更舒服。而不是调用setter。

仅在init方法中使用 ivar,其余的使用 setter。

于 2013-07-10T14:44:02.500 回答