2011-01-05 2 views
5

나는 내 앱을 두들 기면서 깊은 길을 걷기 시작했는데 큰 달리기가되었지만 나는 약간의 물건을 조금씩 움직이게했다.@property에서 @synthesize를 유지하는 모든 것을 릴리스 하시겠습니까?

모든 @property (nonatomic, retain)에 대해 dealloc 메소드에서 [variable release]가 있어야하는 @synthesize를 만듭니다. 이것이 맞습니까?

IBOutlet 일지라도?

+0

+1 좋은 선명도. – gabaum10

+0

@Joe (또는'copy') –

+0

고마워, 마침내 내 두꺼운 두개골로 만들었다 고 생각해. – Slee

답변

11

예. 객체의 소유권을 retain 속성으로 지정 했으므로 소유권을 양도해야합니다.

+2

참고 : http://stackoverflow.com/questions/2189919/how-is-release-handled-for-synthesized -retain-properties –

+0

덕분에, 내 첫 프로그램과 난 그냥 너무 트랙에서 - 출시 할 속성의 톤을 가지고 :) – Slee

+0

당신은 Accessorizer를 확인하고 싶지 수도 ... 그것은 당신의 인생을 더 쉽게 만들거야. http://www.kevincallahan.org/software/accessorizer.html 관련 코멘트로 – joshpaul

1

예. 재산을 보유하는 경우 귀하는 부동산을 공개해야합니다.

선언 된 속성은 기본적으로 접근 자 선언 선언을 대신 사용합니다. 속성을 합성 할 때 컴파일러는 결석 한 접근 자 메서드 만 만듭니다. dealloc 메소드와 직접적인 상호 작용은 없습니다. 속성은 자동으로 해제되지 않습니다.

Declared Properties

일반적으로 당신은 당신의 dealloc 메서드에서이 작업을 수행 할 것입니다.

- (void)dealloc { 
    [property release]; 
    [super dealloc]; 
} 
4

당신은 유지 IBOutlet이있는 경우 또한, 당신은 그것을 해제해야하고 -viewDidUnloadnil로 설정합니다. 이렇게하면 뷰가 제거 될 때 객체가 콘센트를 놓을 수 있습니다. 특히 메모리 부족 경고에 대한 응답으로 객체를 콘센트에서 놓을 수 있습니다. 그 방법에서 ivar를 nil으로 설정하면, 오브젝트가 연속적으로 할당 해제되면 ivar를 두 번 해제 할 위험이 없습니다.

관련 문제