저는 Apple docs 및 샘플 코드를 검토하여 IBOutlets의 메모리를 관리하는 최선의 방법을 결정하려고했습니다. 나는 적어도 혼란 스럽다.iOS - IBOutlets의 메모리를 관리하는 가장 좋은 방법은 무엇입니까?
CurrentAddress 샘플 코드는 속성으로 IBOutlets를 선언
@interface MapViewController : UIViewController <MKMapViewDelegate, MKReverseGeocoderDelegate>
{
MKMapView *mapView;
UIBarButtonItem *getAddressButton;
}
@property (nonatomic, retain) IBOutlet MKMapView *mapView;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *getAddressButton;
좋아요. 그리고 이들은 dealloc에서 해제됩니다 :
이제 이러한 속성을 할당해서는 안됩니까? 보유하도록 설정하면 IBOutlet의 보유 수는 두 번 증가합니다 : 펜촉이로드되고 속성이 설정 될 때 한 번? dealloc에서 해제하는 대신이 속성을 nil로 설정하는 것이 더 좋지 않습니까?
@ Jilouc : dealloc 메소드에서,'IBOutlet'을 해제 한 직후에 왜 그것을 null로 설정하지 않았습니까? 이러한 호출을 두 가지 방법으로 분리하지 않으면 잠재적 인 문제가 발생할 수 있습니다. – FreeAsInBeer
당신은 아마도 그것을 공개하지 않기 때문에 (아마도 @synthesize 내부에 릴리스 될 것입니다) viewDidUnload가 메모리를 더 빨리 해제하는 dealloc보다 빨리 발생합니다. – slf
충분히 정확하지 않았기 때문에 (답변 편집). 내 콘센트를 dealloc에서도 사용하지 않았습니다. 일반적으로, 나는'dealloc'에서'viewDidUnload' (release + nil을 처리합니다)와'[myOutlet release], myOutlet = nil;'에서'self.myOutlet = nil'을 사용합니다. 그러나 그것은 단지 습관 일뿐입니다. – Jilouc