【问题标题】:Why strange crash with mapview happen?为什么会发生 mapview 的奇怪崩溃?
【发布时间】:2010-12-14 02:14:05
【问题描述】:

我有一个非常简单的应用程序。 1 个导航控制器和 2 个视图控制器。

第一个视图只有一个按钮。 第二个视图有一个地图视图(MKMapView)。 我检查了这个地图视图的显示当前位置属性 我创建了插座,然后使用 Builder Interface 连接所有内容。

在第二个的dealloc方法中,我将mapview的delegate设为nil,然后释放mapview的outlet。

mapView.delegate = nil; [地图视图发布];

当我点击 view1 中的按钮时,会加载 view2,然后点击返回按钮。如果我正常操作,一切正常。但是如果我做的很快,重复很多次。该应用程序将崩溃。 如果我不发布 mapView 或不检查 showcurrentlocation 属性,则应用运行良好。

我不明白为什么会这样。任何人都可以帮我解决这个问题。非常感谢 !

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    我在控制器类中的修复是 ..

    (void)dealloc
    {
      mapView.showUserLocation = NO;  // Work around bug in MKMapView
      [super dealloc];
    }
    

    【讨论】:

      【解决方案2】:

      尝试通过添加了 Zombie 乐器的 Instruments 启动您的应用。它应该向您显示过度释放的对象。您还应该添加带有 VM 跟踪器的分配工具,以查看内存消耗随时间的变化情况。这样您就可以很快得到答案。

      附言更多代码会更好。

      【讨论】:

      • 我已经调查过这个问题,答案是:这是MKMapView的一个bug。我们可以通过以下方式解决这个问题:为 MKMapView 对象创建静态瞬间,或者调用延迟方法释放 mapView 约 4 秒。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多