(Belki bellek yönetimi?) AddAnnotations sorunu

oy
1

Ben MKMapView / ek açıklamalar / UINavigationController ile bazı sorun yaşıyorum. Temelde, ben bir UINavigationController kullanarak görüşlerim yönetmek; Bence birinin bir MKMapView içerir ve i addAnnotations metodu kullanarak (10 ila 200) ile ilgili açıklamaları ekleyin.

Her şey tek bir şey hariç iyi çalışıyor: benim UINavigationController, iphone simülatörü çöker üzerinde çok hızlı giderseniz, bir EXC KÖTÜ ERİŞİM sinyali aldıktan. i MKMapView içeren görüşümü yüklemek ve anında UINavigationController gezinti çubuğundan Geri düğmesine basın Örneğin, ben sinyal olsun. Sorun addAnnotations yöntemi ile olduğunu düşündüm: Benim MKMapView yüklendiğinde, ben buna ek açıklamalar ekleyebilir ama her şey uyumsuz yapılır gibi görünüyor. i Geri düğmesine basmadan önce ikinci gibi beklersen, ben hiçbir hata alıyorum ama çok hızlı olursam, çöker. Ben addAnnotations satırını kaldırın tüm eğer hiç hata alıyorum. Ben addAnnotations yöntem işi var ÖNCE benim bakış UINavigationController tarafından serbest bırakılır çünkü sanırım.

Bu herhangi bir iyi çözüm? Ben kullanıcı (örneğin bir yükleme görünümünü görüntüleme) beklemek istemiyoruz; i çözüm daha iyi bir bellek yönetim olabileceğini tahmin ama ben bunu nasıl görmüyorum.

    if(DEBUG_MODE) { NSLog(@Creating array of placemarks : begin); }
self.placemarkCache = [[NSMutableArray alloc] init];
// Loading placemarks for a placemark dictionary
NSArray *sortedKeys = [[self.placemarkDictionary allKeys] sortedArrayUsingSelector:@selector(compare:)];
for (id key in sortedKeys) {
    MyPlacemark *currentPlacemark = [self.placemarkDictionary objectForKey:key];
    [self.placemarkCache addObject:currentPlacemark];
    [currentPlacemark release];
}
if(DEBUG_MODE) { NSLog(@Creating array of placemarks : done); }
if(DEBUG_MODE) { NSLog(@Adding placemarks : begin); }
[self.mapView addAnnotations:self.placemarkCache];
if(DEBUG_MODE) { NSLog(@Adding placemarks : done); }

Bu örnekte günü, ben ekleme işaretlerini: bitti olsun şeyden önce mesaj haritada görüntülenir olsun.

Oluştur 07/09/2009 saat 17:31
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
5

Aynı konu veya hata yapıyorduk, bir bir çözüm bulduk blog post .

Ne görüyorsanız ayıklayıcı yığın izleme bakarak post konuyla aynıdır olmadığını görebilirsiniz.

Aslında MapViewController (MKMapView üst) dealloc'd edilmiş ve MKMapView ait iç elemanların getirilirken zaman uyumsuz haritası MKMapView delegesi (ki MapViewController idi) aramak için çalışıyor nedeniyle konudur.

Yani, MapViewController ait dealloc üzerine, bazı fayans geri verilmesinde sonra hiç delegeler denir ki MKMapView.delegate = nil sıfırlamak lazım.

GÜNCELLEME: Bu temsilci tutucu bırakmadan önce dealloc nil delegelere iyi uygulama (bellek yönetim docs bir yerlerde) var. Bu, uzun zaman uyumsuz görevleri çalıştırmak için bunun olmasını gibi sorunları duracaktır.

Cevap 07/09/2009 saat 17:35
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more