2011-01-02 2 views
3

가능한 중복 :
Why shouldn't I use Objective C 2.0 accessors in init/dealloc?
dealloc, use release or set to nil for properties?Objective-C 스타일 질문 : dealloc에서 "release"또는 "nil"속성을 사용합니까?

안녕,

애플 보통의 dealloc에서 인스턴스 변수를 해제하지만 아무것도의 dealloc에서 속성을 nilling 문제가?

내가 대신의 의미 :이 같은

- (void) dealoc(){ 
    [myRetainedProperty release]; 
    [super dealloc]; 
} 

쓰기 코드 :

- (void) dealoc(){ 
    self.myRetainedProperty = nil; 
    [super dealloc]; 
} 

나는 그것이 하나의 추가 메서드 호출 것을 알고 있지만 '아무튼으로 다른 한편으로는 안전합니다 속성 양식 retainassign으로 변경하면 dealloc을 수정하는 것을 잊지 마십시오.

당신은 어떻게 생각하십니까? 성능 외에 nil로 설정하는 대신 릴리스를 사용하는 다른 이유에 대해 생각해 볼 수 있습니까?

업데이트 : 이 질문은 "Why shouldn't I use Objective C 2.0 accessors in init/dealloc?"과 중복되는 것으로 보입니다.

+0

[dealloc, release를 사용하거나 속성에 nil로 설정할 수 있습니까?] (http://stackoverflow.com/questions/4124049/dealloc-use-release -or-set-to-nil-for-properties) –

답변

2

뭔가를 설정하는 무기 호에 "스타일"이론 ..

그래서 나는 더 나은 사용을 고려 " 비슷하게 이미 논의되었다 : Why shouldn't I use Objective C 2.0 accessors in init/dealloc?

+0

링크를 보내 주셔서 감사합니다. –

+0

투표로 중복 투표를하십시오. 그런 다음이 질문은 해당 질문으로 리디렉션됩니다. –

1

꽤 오래 "릴리스"스타일을 사용하고 있었는데 이후 속성을 nil로 설정했습니다. 방금 ​​ivar를 릴리스하면 나중에 dealloc에서 재사용 할 수있는 기회가 생겼다고 생각합니다. 또한 속성을 nil로 설정하면 "ivar를 캡슐화합니다. 속성

Moszi

에게 ... 그러나 내가 해제만을 사용하는 실제 이유를 모르는 아주
0

네 자신을 쓰는 것을 잊을 때까지 nil을 더 잘 보이게 지정하십시오. 속성 이름 전에 :)

+0

좋은 이유 :). 다행히 누설 도구가이 문제를 파악할 것입니다. –