2013-07-10 76 views
3

我学习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 

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

+0

在'init'和'dealloc'之外使用setter。在这两种方法中直接使用伊娃。 – bbum

回答

1

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

使用的setter或getter方法有自。 :

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

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

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

_x = 10; 

在您例如,第二种方式是直接访问伊娃,和第一种方式是使用二传手(与self.x = 10相同),

建议使用第一种方法(使用self或使用setter),因为它处理内存问题,释放先前的值,如果需要的话可以保护线程等。使用自我舒适。比调用setter。

只有当你在init方法中使用伊娃时,对于其余部分,请使用setter。