2011-09-16 3 views
0

은 다음 속성 선언에 어떤 영향이 있는지 알고 싶습니다. 수동으로 구현 된 설정자가 변수를 보유합니다.setter를 수동으로 구현하려면 (보유) 필요합니까?

인터페이스 :

@property (nonatomic, retain, setter=setIncident:) Incident * incident; 

구현 : 수동으로 설정 동작을 제어하고 수동으로 유지하고 있기 때문에

- (void)setIncident:(CSIncident *)newIncident 
{ 
    if (incident != newIncident) 
    { 
     [incident release]; 
     incident = [newIncident retain]; 
    } 
} 
+0

주 사이에 불일치가 있습니다. – Jano

+0

네, 그렇다면 객체 자동 반복을 권장할까요? – mrd3650

+0

예, '[인시던트 자동 해제]; incident = newIncident; 또는'id old = incident; 사건 = [newIncident retain]; [이전 릴리즈];'원하는 경우 if를 추가 할 수 있습니다. 또는 전체를 삭제하고 @synthesize에 의해 생성 된 메서드를 사용하십시오. 생성 된 코드는 다음과 같습니다. http://www.opensource.apple.com/source/objc4/objc4-371.2/runtime/Accessors.subproj/objc-accessors.m – Jano

답변

0

그것은 많은 가치를 가지고 있지 않습니다.

수동 구현을 제거하면 머리글을 볼 때의 동작을 이해할 수 있지만 (이미 setter =를 제거해야 함) 동작을 이해할 수있는 유일한 값입니다.

은 귀하의 질문에 당신은 또한 내부 자료와 유지 사이의 액세스가 전무 객체를 반환하면 것을 setDog 및 setIncident

+0

@brynanmac 답변에 대한 감사와 (현재 고정 된) 불일치를 지적하십시오. – mrd3650

관련 문제