릴리스 속성과 관련하여 iOS의 메모리 관리에 대한 여러 가지 접근 방식을 보았습니다. 동료들과 토론 한 후 찬반 양론이 머리 속에 혼란스러워졌습니다.이러한 서로 다른 dealloc 전략의 장단점은 무엇입니까?
나는 예외를 만들 때를 이해하면서 자신과 다른 사람들이 쉽게 기본 접근 방식을 선택할 수 있도록 장단점을 요약하고 싶습니다. 여기에 내가 본 3 개 유사은 다음과 같습니다 추가 할 다른 변화가있는 경우
이 @property (nonatomic, retain) MyObject *foo;
// Release-only. Seems to be the favored approach in Apple's sample code.
- (void)dealloc {
[foo release];
[super dealloc];
}
// Property accessor set to nil.
- (void)dealloc {
self.foo = nil;
[super dealloc];
}
// Release, then nil.
- (void)dealloc {
[foo release];
foo = nil;
[super dealloc];
}
가정, 여기에 언급 나는 작전을 편집 할 수 있습니다.
+1 다소 신비한 주제/관습에 대한 좋은 질문입니다. 나는 개인적으로'dealloc' 내에서'release'를하고, viewDidUnload' 메쏘드에서 (non-IBOutlet 속성을 위해) 속성을'nil'으로 설정합니다. 이에 대한 확실한 대답이 있는지 모르겠지만 답변을 읽으 려합니다. – Stuart