ios - MKMapView 内存管理

标签 ios objective-c memory-management mkmapview

我在 Objective-C 中使用 MKMapView。应用程序占用 45MB 内存,但当 MKMapView 出现时,内存使用量增加到 110MB。 这不是好的 iPhone 4 和 iPhone 4S。

请建议我优化内存的代码结构。

最佳答案

使用 MKMapKit 需要注意内存管理。特别是如果您正在使用 UITabbarController 并在任何 View Controller 中设置 MapView

如果您需要在您的应用程序中使用MKMapKit,我建议您在viewWillAppear 中初始化MapView 并在 中从Superview 中删除viewDidDisappear。此外,您还需要删除它的委托(delegate) mapView.delegate = nil 并在从 Superview 删除之前制作 MapView = nil

objective-C

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    mapView.delegate = nil;
    [mapView removeFromSuperview];
    mapView = nil;
}

迅速

override func viewDidDisappear(animated: Bool) {
    super.viewDidDisappear(animated)
    mapView.delegate = nil
    mapView.removeFromSuperview()
    mapView = nil
}

通过这样做,您所有被 map 占用的内存都将被释放。

请不要在 Storyboard 或 xib 中的 ViewController 中添加 MapView。以编程方式创建 MapView。

希望它能帮助您使用 MKMapKit 进行内存管理。

关于ios - MKMapView 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34153265/

相关文章:

ios - Xcode 错误 : PBXCp error: couldn't create directory

java - 使用scaledBitmap创建透明度/镜像效果时避免致命内存错误

php - Laravel Passport 密码授予刷新 token

ios - 无法使用内部使用 .xib 文件的 iOS 框架

ios - 在具有 Storyboard segue 的 collectionviewcell super View 上带有推送 Segue 的按钮会引发错误

objective-c - 从不同线程访问只读对象的思考

python - Python csv.DictReader 的内存使用问题

c++ - 堆栈上的内存分配和缓冲区溢出,x86 ISA32

ios - 无法在 iOS Swift 3 中单击 UIBarButtonItem 添加目标和运行功能

iOS 关闭 ViewController 链