クラッシュクラッシュクラッシュ レイヤーからアニメショーンをとりのぞけ - MKMapViewがらみ 2010/05/22

自分自身でおきている問題が100%そうなのかというとまったくもって自信はないが、クラッシュしずらくなった感じがするので、メモります。

ことのはじまりは、
どうも、
プログラマメモ2: [はしり書き]MKMapViewのアノテーションのピン画像を変更
このあとから、シュミレータで突然おちることがおおくて、まれに実機でもおちるようになりました。




半分あきらめかけていたのですが、上記の記事でなるほどと思い、まず、ユーザーロケーションを使わなくしたら落ちなくなりました。
mapView.showsUserLocation = NO;

ようはアニメーションしている間に、画面オブジェクトが破棄されようとすると起きる事象のようですね。
で、ユーザロケーションをしめす動作でいろいろアニメーションしているから、問題がおきるというわけ。
(※この辺は、どう実験していいのかわかってないので僕自身100%保証できないけど)

この件に関しての具体的な解決方法は、下記のページを参考にしました。

ベストな解決方法は、
viewWillDisappearでmapViewのレイヤーアニメーションをとりのぞくということを行う。
アニメーションを使う際の、必須コードなのかもしれない...
コードは、
- (void)viewWillDisappear:(BOOL)animated {
[mapView.layer removeAllAnimations];
}


そういえば先月,
Core Animationの本買ったんだった自分
Orz...

追記:改善できたと思ったけど、なんかだめ....
どうしてだろう、とりあえずこんなコードをためしてみてます。
- (void)viewWillDisappear:(BOOL)animated {
mapView.showsUserLocation=NO;
[mapView.layer removeAllAnimations];
}


なんかもうだめだ...

追記:ではこれでどうだろう。delegateしているので、
- (void)viewWillDisappear:(BOOL)animated {
mapView.showsUserLocation=NO;
mapView.delegate=nil;
[mapView.layer removeAllAnimations];
}


参考

さあ、どうだ、これでどうだ
Orz...

: