控制器跳轉記憶體一直增加的問題

2021-08-18 10:27:15 字數 515 閱讀 6821

當時那個帖子需要的只是一種很簡單的實現。我舉個例子:有控制器a和控制器b,b是從a條跳轉的。

當時的問題是在b返回a後,再從a跳轉到b,怎麼保持b的狀態不變?

但是這裡引申了另乙個問題,為什麼b會改變?

先來簡單說說在跳轉時到底做了什麼。。。a拿到b的例項,然後呼叫push或present跳轉,然後window將b的view新增到自己的subviews上,這時b要麼被導航控制器持有著,要麼就是被a的presentedviewcontroller屬性持有著,所以b是有持有者的。

當b pop或者dismiss回去後,系統會將b從導航控制器和a的相關屬性上移除。這時b如果沒有其他持有者,那麼就宣布死亡,狀態也隨之消失。

所以說如果要保持b的狀態不變,就只能讓它不死。分析上面的「原理」可以知道系統在b返回a後將b從雙方的對應屬性上移除了,所以我們可以將b例項新增到不會被系統干涉到的地方就行了。這個地方就是自定義屬性,或成員變數。結論上來說就是a將b寫成是成員變數或屬性,強引用的。這樣就能保持b例項不死。。。至少在a例項死掉前不死。

問題。控制器跳轉

自動型 action 不需要判斷,直接拖線push到目標控制器。手動型 manual 需要判斷,點選之後執行跳轉。將 控制器push到目標控制器。設定identifer。在 控制器中 self performseguewithidentifier logintosignup sender nil 只...

控制器相關(控制器的建立 跳轉 導航控制器 等)

控制器常見的建立方式有以下幾種 通過storyboard建立 直接建立 viewcontroller cz viewcontroller alloc init 指定xib檔案來建立 viewcontroller cz viewcontroller alloc initwithnibname view...

mysqld 一直starting 的問題

今天開啟虛擬機器上的centos,發現啟動mysqld的時候,它一直處在starting.等了n久還沒起起來,也不failure。無奈,進不了系統,在網上也搜不到跟我相似的狀況。重啟,在grub介面改用單使用者模式 也就是方式1 進系統 被逼的。之後嘗試手動service mysqld start,...