2012-03-05 8 views
1

私は以下のコードでiPadでテストしました。MKOverlayViewパフォーマンスの問題。何もしない。しかし遅い

次のコードのようにMyOverlayを追加すると、drawMapRectで何もしなくても、デフォルトのマップタイルのMKMapView読み込みが遅くなります。

MKMapViewからMyOverlayを削除すると、デフォルトのマップタイルの読み込みが再び高速になります。

drawMapRectが呼び出されたときにバックグラウンドで何が行われるのだろうかと思います。

以下のコードはパフォーマンス上問題がありますか?

[コード]

@implementation MyOverlay 

-(id) init 
{ 
    self = [super init]; 

    boundingMapRect = MKMapRectWorld; 
    boundingMapRect.origin.x += 1048600.0; 
    boundingMapRect.origin.y += 1048600.0; 

    coordinate = CLLocationCoordinate2DMake(0, 0); 

    return self; 
} 

... 
@end 


@implementation MyOverlayView 

- (id) initWithOverlay:(id<MKOverlay>)overlay 
{ 
    self = [super initWithOverlay:overlay]; 

    ... 
    return self; 
} 

- (BOOL) canDrawMapRect:(MKMapRect) sm zoomScale:(MKZoomScale)zoomScale 
{ 
    return true; 
} 

- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext: CGContextRef)context 
{ 
    return; // do nothing, but map loading become slower 'much'. 
} 
@end 

答えて

0

のUIViewのdrawRect方法を思い出させるdrawMapRect:zoomScale:inContext: MKOverlayViewの描画メソッドの名前。 MKOverlayViewはUIViewのサブクラスです。 UIViewのサブクラスのこの警告を提供します。

/* 
// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
- (void)drawRect:(CGRect)rect 
{ 
    // Drawing code 
} 
*/ 

これはまだ懸念される場合は、このSO質問、およそdrawRectのパフォーマンスを見ている必要がありますto drawRect or not to drawRect (when should one use drawRect/Core Graphics vs subviews/images and why?)

関連する問題