使用iOS 6 SDK升級xcode並編譯我的應用後,我在應用中發生了很多崩潰。從我能夠追蹤到的內容看起來,UIKit的消息看起來像是在模態時使用視圖控制器,而不是新創建的視圖控制器。這是它的外觀:UIKit消息在iOS 6的segue期間釋放對象0
我有一個Tabbar控制器,它顯示一個導航控制器。由導航控制器顯示的另一個視圖控制器顯示一個模態視圖控制器。
TabbarController - > NavigationController - > ViewController(呈現) - |顯示使用模態segue | - >的ViewController(呈現)
步驟來使所述碰撞:
- 在層次結構中訪問視圖控制器(呈遞)如上所示。它不是根視圖cntrl但更高。
- 觸發segue到模態視圖控制器。
- 從標籤欄(無論哪個)選擇一個選項卡並返回到相同的視圖控制器(呈現)。選擇標籤會在導航控制器上調用popToRoot。
- 再次觸發模式SEGUE到視圖控制器(提交)
- 崩潰:殭屍對象 - 視圖 - 控制器(提交) - 得到了傳遞消息
爲什麼? 它看起來像在以前的iOS中,當popToRoot被調用並且View Controller(呈現)正在清理時,模態視圖也被破壞了。所以當它再次被訪問時,它被重新創建並呈現。 在iOS 6上,從Allocations Instrumentation顯示模式視圖與 視圖控制器(呈現)一起銷燬。但是當它由於某種原因被訪問時,UIKit會創建一個新的Modav視圖控制器,然後再發送不再存在的舊視圖控制器。沒有意義。
另一件令我想知道的事情是,在iOS 5 Allocations Instrumentation工具從不向我顯示保留計數= 0的View Controller(呈現),但iOS 6(之後它使其成爲-1)。
我知道這可能是非常困難的問題來幫助我,但也許有人已經解決了iOS 6的問題和這樣的segues?
從分配儀器儀表工具,我可以告訴大家,很多事情塞格斯的實施得到了改變在iOS 6