2010-02-12 9 views

답변

12

에게 주어 더블 유지; s은 한 번만 보존됩니다.

이유는 초기화 도구에서 합성 된 setter 메서드를 호출하지 않기 때문입니다. 이 라인 :

o = [s retain]; 

s 유지 s과 동일하게 설정 o; 즉, os은 같은 개체를 가리 킵니다. 합성 된 액세서는 호출되지 않습니다. @property@synthesize 행을 완전히 제거 할 수 있습니다.

그 라인이 마치 : 값을 두 번째 유지 것이다

self.o = [s retain]; 

또는 그 합성 접근 호출 될 등가

[self setO:[s retain]]; 

. 일반적으로 이니셜 라이저 내에서 접근자를 사용하지 않는 것이 좋습니다. 따라서 init 함수를 코딩 할 때 o = [s retain];이 더 많이 사용됩니다.