2013-07-10 105 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。