2011-01-28 39 views
1

在我的應用程序中,我獲取用戶位置並執行反向地理編碼器。同時用戶可以寫一個筆記。 有時候,當我調試和運行我的應用程序,我得到這個消息:地理定位,反向地理編碼器,回調和對象釋放

*** -[MyViewController respondsToSelector:]: message sent to deallocated instance 0x61a6920 

我不解決這個成功,但我注意到,禁用問題好好嘗試一下出現geolocalization(至少到現在爲止)。 所以我認爲,當地理定位開啓時,反向地理編碼器(一個單獨的線程)可以在控制器已經解除分配時返回。 有可能嗎?如果是這樣的話,怎麼可能避免呢?

感謝,

弗蘭

回答

3

這是完全可能的(事實上,一個相當常見的錯誤)爲代表像反向地理編碼的異步過程中得到來自進程下dealloc'ed出來。當發生這種情況時,(在本例中)地理編碼器會愉快地在釋放委託對象上調用它的委託方法,就像你看到的一樣。

這就是爲什麼MKReverseGeocoder-cancel方法。您想在您用作地理編碼代表的課程中的-(void)dealloc上調用該代碼。也可能將您的地理編碼器的代理設置爲nil

這很可能意味着您需要向該類添加一個命名/合成屬性,以保持地理編碼器的句柄。所以你必須在你的dealloc方法中說「取消」TO。