2010-04-27 38 views
1

只是好奇,因爲:在Int上使用setters?

unsigned int pulseCounter_001; 
@property(nonatomic, assign)unsigned int pulseCounter_001; 
@synthesize pulseCounter_001; 

是否有任何理由使用:

[self setPulseCounter_001:0]; 

或者只是使用:

pulseCounter_001 = 0; 

風格明智的,我認爲後者說:「我們是設置一個int「更好,只是好奇於每個涉及的任何開銷?

gary

回答

4

前者使用生成的setter方法來設置整數。這種方法調用會造成很小的性能損失,但通常認爲它更好,因爲它封裝了您的數據訪問。例如,如果您想在每次將新值設置爲此整數時記錄一些內容,則可以使用setter方法執行此操作。封裝是好的,你應該使用它。

正如其他人所說,KVO是另一個使用屬性的非常好的理由。

+0

謝謝Martin,我會從現在開始使用setter,非常感謝。 – fuzzygoat 2010-04-27 15:05:30

+0

請注意,您通常不應該在init方法中使用setter。 – ustun 2010-04-27 20:32:07

2

前者符合KVC,將通知每個KVC觀察員pulseCounter_001的值已更改。後者不符合KVC標準,不會通知觀察員價值變化。因此,如果您有KVC觀察員或綁定到pulseCounter_001,後者將不會與他們一起工作。

3

使用setter的另一個好理由是支持KVO

+0

謝謝,這是一個很好的觀點。 – fuzzygoat 2010-04-27 15:03:23