2012-02-24 82 views
1

我已經看到訪問iphone sdk與 - >或變量。符號。哪一個是最好的?self.variable和self-> variable之間有什麼區別?self.variable和self-> variable之間的區別是什麼?

+0

有關使用點符號和屬性與合成時發生的情況的說明,請參見[this](http://stackoverflow.com/questions/8576593/objective-c-memory-management-of-instance-members/ 8576760#8576760) – 2012-02-24 08:31:40

回答

3

的點表示法經過存取器中,箭頭符號直接進入實例變量。試試這個代碼:

@interface Foo : NSObject 
@property(assign, nonatomic) NSInteger bar; 
@end 

@implementation Foo 
@synthesize bar; 

- (void) setBar: (NSInteger) newBar 
{ 
    NSLog(@"Setting new bar."); 
    bar = newBar; 
} 

- (id) init 
{ 
    self = [super init]; 
    self->bar = 5; // doesn’t log anything 
    self.bar = 6; // logs 
    return self; 
} 

@end 
+0

+1:非常好的解釋,謝謝! – 2012-02-24 10:28:09

+0

請問什麼是日誌? – nameless 2012-02-24 10:30:49

+0

「日誌」正在使用'NSLog'寫入控制檯。 – zoul 2012-02-24 10:41:41

0

點符號將使用屬性getter/setter方法 - 因此取決於您聲明的變量可能會被保留或分配的位置,或者您可以指定您自己的getter/setter方法在設置該屬性時執行額外的工作。

self->是一個指向自我的指針。它直接訪問var。我個人並沒有在obj c中使用它,因爲'var on its own'將會產生相同的效果。

ps。關於SO這個確切的主題,還有很多其他問題/答案。

This一個

This一個

0

self.var意味着你聲明屬性爲VAR,假設這樣的:其實


@property (nonatomic, retain) id var; 

它調用[自我VAR]爲self.var

雖然self->var只是獲得自我實例的成員值,就像你在C++或其他。

相關問題