2010-04-27 5 views
1

그냥 궁금 : setters 사용 Int? 주어진

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

이 사용하는 어떤 이유가 있습니까 : 단지

[self setPulseCounter_001:0]; 

또는 사용 :

pulseCounter_001 = 0; 

스타일 현명한 나는 후자는 "우리가 이다라고 생각 int를 "으로 설정하는 것이 더 좋으며, 각각에 관련된 오버 헤드에 대해 궁금해할까요?

게리

답변

4

전자는 생성 된 setter 메서드를 사용하여 정수를 설정합니다. 이것은 메소드 호출로 인한 성능 저하가 적지 만 데이터 액세스를 캡슐화하므로 일반적으로 더 나은 것으로 간주됩니다.

예를 들어, 새 값을이 정수로 설정할 때마다 무언가를 기록하려면 setter 메소드에서 로그 할 수 있습니다. 캡슐화가 좋다. 사용해야한다.

다른 사람들이 언급했듯이 KVO는 속성을 사용하는 또 다른 이유입니다.

+0

마틴, 나는 지금부터 세터를 사용하여 갈 것입니다, 많이 감사하겠습니다. – fuzzygoat

+0

일반적으로 init 메서드에서는 setter를 사용하지 않아야합니다. – ustun

2

전자는 KVC와 호환되며 모든 KVC 관찰자에게 pulseCounter_001의 값이 변경되었음을 알립니다. 후자는 KVC를 준수하지 않으며 관찰자에게 가치 변화를 알리지 않습니다.

따라서 KVC 옵저버 나 바인딩이 pulseCounter_001 인 경우 후자는 해당 사용자와 호환되지 않습니다.

3

세터를 사용하는 또 다른 이유는 KVO을 지원하는 것입니다.

+0

감사합니다. 좋은 지적입니다. – fuzzygoat

관련 문제