在viewDidLoad中使用init并在viewDidUnload中释放的iOS内存问题

Mom*_*ntH 3 ios

以下代码是否存在潜在的内存问题?:

- (void)viewDidLoad
{ 
    locationManager = [[CLLocationManager alloc] init];
}

- (void)viewWillAppear:(BOOL)animated {

    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    [locationManager startUpdatingLocation];
}

- (void)viewDidUnload
{
    [locationManager release];
    locationManager=nil;
    [super viewDidUnload];
}
Run Code Online (Sandbox Code Playgroud)

我用仪器检查了它,它说上面的代码有内存泄漏.

Jir*_*iri 5

您应该在dealloc方法中释放locationManager.

- (void)dealloc
{
    [locationManager release];
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

原因viewDidUnload是不能保证被调用.

详情请见以下问题:

什么时候调用UIViewController viewDidUnload?

viewdidunload根本没有被调用!