MKMapView
私の質問「注釈を削除するとリークが発生します」と同様に。ビューベースのプロジェクトを作成し、ビューのNIBにとを追加し、デリゲートを接続する場合(リークをトリガーするために実際に何もする必要がないため、メソッドを作成していません)、リンクインすることを発見しUISearchBar
ましMKMapView
た。 MapKitを使用してプロジェクトを起動し、クリックするだけでUISearchBar
1k以上のリークが発生します。UISearchBar
とMKMapView
ビューの両方がない限り、これは発生しません。コードからビューを作成するときにも同じ問題が発生します。NIBの動作が異なる可能性があると思いましたが、そうではありません。
MKMapView
漏れているか、何か間違ったことをしていますか。
コードで問題を再現するには、以下のコードを試してください-新しい「ビューベースのアプリケーション」プロジェクトを作成しました
TestMapViewFromCodeViewController.h
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface TestMapViewFromCodeViewController : UIViewController {
UISearchBar *searchBar;
MKMapView *mapView;
}
@property (nonatomic, retain) MKMapView *mapView;
@property (nonatomic, retain) UISearchBar *searchBar;
@end
TestMapViewFromCodeViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
UISearchBar * tmpSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0,0.0,self.view.frame.size.width,40.0)];
[self.view addSubview:tmpSearchBar];
[self setSearchBar:tmpSearchBar];
[tmpSearchBar release];
MKMapView *tmpMapView=[[MKMapView alloc] initWithFrame:CGRectMake(0.0,0.0,self.view.frame.size.width,self.view.frame.size.height)];
tmpMapView.showsUserLocation=FALSE;
[self.view insertSubview:tmpMapView atIndex:0];
[self setMapView:tmpMapView];
[tmpMapView release];
}
- (void)dealloc {
[mapView release];
[searchBar release];
[super dealloc];
}
mapViewとsearchBarでサブビューを保持しましたが、問題を再現するためにこれはおそらく不要です。
ここで公開する前にこのコードをテストしたところ、このリークはシミュレーターでは発生せず、電話でのみ発生することに気づきました...