IBOutlets のメモリを管理する最適な方法を判断するために、Apple のドキュメントとサンプル コードを確認してきました。控えめに言っても、私は少し混乱しています。
CurrentAddress サンプル コードは、IBOutlets をプロパティとして宣言します。
@interface MapViewController : UIViewController <MKMapViewDelegate, MKReverseGeocoderDelegate>
{
MKMapView *mapView;
UIBarButtonItem *getAddressButton;
}
@property (nonatomic, retain) IBOutlet MKMapView *mapView;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *getAddressButton;
偉大な。そして、これらは dealloc で解放されます:
- (void)dealloc
{
[mapView release];
[getAddressButton release];
[super dealloc];
}
これらのプロパティを割り当てるように設定する必要はありませんか? 保持するように設定すると、IBOutlet の保持カウントが 2 回増加するためです。1 回目はペン先がロードされたとき、もう 1 回はプロパティが設定されたときです。そして、dealloc で解放する代わりに、これらのプロパティを nil に設定する方がよいのではないでしょうか?