先日投稿した、MKMapViewのPinを削除するコードが、
ウマく動かない場合があるようなので補足。
for ( id<MKAnnotation> annotation in mapView.annotations ) {
if ( [annotation isKindOfClass:[MKUserLocation class]] )continue;
[mapView removeAnnotation:annotation];
}
先日投稿したコードは上記。
しかしこのコード、iOS4.3.1のiPod touchでは動いたのだが、
iOS4.1のiPhoneではExceptionが発生して動作しなかった。
いわれてみれば、このコードには致命的な欠陥がある。
mapView上のannotationリストでループを回しながら、当のannotationを削除してゆこうという、しかも、順番はframeworkにお任せと………。
回し方によっては、これ以上にないくらい致命傷だ。
どうやら、この辺のロジックが最新のframeworkではお利口さんになっているらしく、問題が隠蔽されていたらしい。
何も考えずに書いていると、こういう地雷的なコードが出来上がってしまう事があるので、注意したい。
対応方法をかんがえないとなぁ〜
0 件のコメント:
コメントを投稿