亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ViewController responsesToSelector:消息發送到釋放實例

ViewController responsesToSelector:消息發送到釋放實例

iOS
躍然一笑 2019-12-10 09:52:23
好的,這是交易,我討厭提出有關調試和崩潰的問題。因為我平時處理他們自己,但我不能讓我的身邊這樣一來,即使在已經觀看多個問題。好的,所以這是問題所在,我在此堆棧跟蹤中隨機打開和關閉我的應用程序:*** -[ViewController respondsToSelector:]: message sent to deallocated instance 0x1e5d2ef0在哪里ViewController可以有所不同,有時會在我的代碼崩潰的地方,有否關聯到特定的ViewController和并不擁有或調用它。另外,要獲得該控制臺的跟蹤信息,我已經啟用了Zombies,否則我將完全不獲得任何控制臺打印信息,而只會得到:objc_msgSend,這意味著我正在傳遞已發布的消息。但是我找不到那兒...我真的被卡住了!通常,我總是調試崩潰,所以我真的很堅持。同樣,它在不同時間,不同時間在不同位置崩潰。和它崩潰的地方幾乎沒有任何關系ViewController。我覺得這很令人困惑。您需要我的任何代碼嗎?我有很多文件,由于它在不同地方崩潰,因此分發我的代碼會很麻煩!我嘗試添加沒有運氣的符號斷點,并且iOS的Instruments應用程序上沒有Zombies。我無法在模擬器上運行我的應用程序,因為它具有不支持的架構框架。感謝大家...
查看完整描述

3 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

有類似的問題。在我的情況下,viewController需要獲取navigationController事件,因此它正在注冊為導航控制器委托:


 self.navigationController.delegate = self;

當該控制器被取消分配但仍然是視圖控制器的委托時,發生崩潰。在dealloc中添加以下代碼無效:


-(void) dealloc

{

    if (self.navigationController.delegate == self)

    {

        self.navigationController.delegate = nil;

    }

因為在調用dealloc的那一刻,視圖控制器已經從視圖層次結構中刪除,所以self.navigationController為nil,所以比較肯定會失?。?-(


解決方案是添加此代碼以檢測VC是否在實際離開視圖層次結構之前就離開了視圖層次結構。它使用iOS 5中引入的方法來確定何時彈出視圖而不將其推入


-(void) viewWillDisappear:(BOOL) animated

{  

   [super viewWillDisappear:animated];

   if ([self isMovingFromParentViewController])

   {

      if (self.navigationController.delegate == self)

      {

           self.navigationController.delegate = nil;

      }

   }

}


查看完整回答
反對 回復 2019-12-10
  • 3 回答
  • 0 關注
  • 498 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號