2010-12-14 9 views
1

私は非常に簡単なアプリを持っています。 1 navigationControllerと2つのviewControllers。mapviewで異常なクラッシュが発生するのはなぜですか?

最初のビューにはボタンしかありません。 2番目のビューにはマップビュー(MKMapView)があります。 このマップビューのshow currentlocationプロパティを確認しました 私はアウトレットを作成し、次にBuilder Interfaceを使用してすべてを接続しました。

2番目のdeallocメソッドでは、mapviewのdelegateにnilを設定し、mapview outletを解放します。

mapView.delegate = nil; [mapview release];

私はview1のボタンをタップすると、view2がロードされ、私は戻るボタンをタップします。私がそれを正常にしたら、すべてうまくいく。しかし、私が非常に速くそれをするなら、何度も繰り返す。アプリがクラッシュします。 mapViewを解放していない、またはshowcurrentlocationプロパティをチェックしていない場合、アプリケーションは正常に動作します。

なぜこれが起こるのかわかりません。誰でもこの問題を解決するのに役立ちます。本当にありがとう !

答えて

0

ゾンビ機器が追加された機器でアプリを起動してみてください。それはあなたが上書きされたオブジェクトを示すはずです。また、メモリ使用量が時間とともにどのように変化するかを見るために、VMトラッカーを持つAllocations計測器を追加する必要があります。このようにすれば、あなたはあなたの答えを素早く得ることができます。

P.S.より多くのコードが役立ちます。コントローラクラスで

+0

私はこの問題を調査してきたことだった、と答えは:それはMKMapViewのバグです。これを修正するには、MKMapViewオブジェクトの静的インスタントを作成するか、mapViewを解放するための遅延メソッドを約4秒間呼び出します。 –

2

私の修正が...

(void)dealloc 
{ 
    mapView.showUserLocation = NO; // Work around bug in MKMapView 
    [super dealloc]; 
} 
関連する問題