我遇到了一個問題,但大量的搜索引擎和SO帖子沒有幫助。在我的iOS快速應用程序中,我有一個帶有兩個選項卡的標籤欄控制器。當用戶點擊第二個選項卡時,應用程序切換到第二個屏幕以創建事件。用戶可以自由地在兩個標籤之間切換。在創建事件的第二個選項卡上,用戶可以爲事件添加多個候選位置。用戶能夠添加位置的方式應該是通過地圖,我使用MapKit。我使用push segue將用戶發送到一個新的帶有映射的UIViewController。當用戶點擊添加位置按鈕時,地圖顯示正確(目前我沒有做任何與地圖交互的邏輯)。我的問題是,如果用戶單擊後退按鈕(關閉該地圖畫面),然後再次嘗試添加位置時,UIViewController中會顯示一個灰色的地圖和應用程序將在該行掛起:第二次顯示MapKit失敗,EXC_BAD_ACCESS
class AppDelegate: UIResponder, UIApplicationDelegate {
和該錯誤信息是:
Thread 1: EXC_BAD_ACCESS (code=1, address=0x103c)
#0 0x00699440 in EAGLContext_renderbufferStorageFromDrawable(EAGLContext*, objc_selector*, unsigned int, id<EAGLDrawable>)()
我知道很多SO帖子談到了內存問題,比如這個SO post和我也嘗試瞭解決方案,但它並沒有幫助。
這是我的UIViewController非常簡單的代碼,顯示在地圖:
import UIKit
import MapKit
import ObjectMapper
import CoreLocation
class AddRestaurantViewController: UIViewController{
@IBOutlet weak var theMapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad();
println("viewDidLoad")
}
override func viewWillAppear(animated: Bool) {
println("viewWillAppear")
}
override func viewWillDisappear(animated: Bool) {
println("viewWillDisappear")
}
override func viewDidDisappear(animated: Bool) {
self.purgeMapMemory()
}
func purgeMapMemory(){
println("Now purging...")
self.theMapView.mapType = MKMapType.Standard
self.theMapView.removeFromSuperview()
self.theMapView = nil
}
}
任何提示?
這種情況也發生在我身上。在我的情況下,我推着一個像你一樣的ViewController。更奇怪的是,在使用xcode進行調試時,該應用只會在我的iPhone 6+上崩潰。我仍然在尋找這個問題.. – Jakehao