Proč jsem narazil po MKMapView je osvobozen, jestli jsem to již používáte?

hlasů
23

Mám MKMapView. Někdy poté, co můj názor Regulátor je propuštěn, já dostat EXC_BAD_ACCESS.

Zapnul jsem NSSZombiesa vypadá to, že je MKMapView‚s delegátem - moje kontroleru pohledu! - je volána, přestože oba MKMapViewi UIViewControllerpodtřídy je uvolněno. Zkontroloval jsem, a moje správa paměti je správná.

Co se děje?

Položena 02/02/2010 v 23:10
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
43

To je z důvodu způsobu, jakým MKMapViewfunguje. Je tu operaci čeká, takže MapKit je si zachovávají MKMapViewa to ve skutečnosti není dosud uvolnit. Který sám o sobě není problém. Problém je v tom, že je to stále posílání zpráv do svého delegáta.

Řešením je jednoduchý: Jako součást vyčištění vašeho pohledu regulátoru nastavit delegát zobrazení mapy se na nil, která zabrání MKMapViewodesílání zpráv, které jí.

Toto je popsána v MKMapViewDelegate reference protokolu :

Před uvolněním objekt MKMapView, pro které jste nastavili delegáta, nezapomeňte nastavit delegáta majetku, který objektu na nulu. Jedním z míst, můžete to udělat, je v metodě dealloc kam nakládat zobrazení mapy.

Edit: Dejte Oscara má Dát hlas stejně, jen dole, který zde poskytl dokumentaci nabídku.

Vzhledem k tomu, ARC, navrhuji, to znamená, že byste měli nastavit delegáta vaší mapovém zobrazení, aby nilpodle Vašeho názoru regulátor je dealloc.

Odpovězeno 02/02/2010 v 23:18
zdroj uživatelem

hlasů
18

OK, to je potvrzení odpovědi. Je to z Apple doc, ale je to chybí MKMapView. Je to jen nalézt v dokumentaci k jeho delegáta protokolu:

Před uvolněním objekt MKMapView, pro které jste nastavili delegáta, nezapomeňte nastavit delegáta majetku, který objektu na nulu. Jedním z míst, můžete to udělat, je v metodě dealloc kam nakládat zobrazení mapy.

Poznámka: To platí také pro UIWebView.

I nastavit delegáta ukazatel na MapView k nule v metodě dealloc delegáta a naše pády Zdá se, že byly odstraněny.

Odpovězeno 20/11/2011 v 22:20
zdroj uživatelem

hlasů
2

Nastavení delegáta zobrazení mapy, aby nilnepracoval pro mě. Nicméně stanovení showsUserLocation=NOna delegáta pracoval tím, že žádné aktualizace polohy jsou přijímány.

Odpovězeno 02/09/2011 v 17:57
zdroj uživatelem

hlasů
0

Problém je v mém případě to bylo poprvé, co jsem zahájil aplikaci nemám stisknutí „dovolit“, když výzvou pro povolení umístění (náhodně !!).

Odinstalování aplikace a znovu nainstalovat ho, když se objeví výzva I umožnit schválení a žádné další pád!

Odpovězeno 21/05/2015 v 15:11
zdroj uživatelem

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