0
我有UIViewController的內存奇怪的問題。UIViewcontroller奇怪的問題
考慮以下情形,其中,我有的ViewController甲即一個導航堆棧的一部分,並且是另一個的ViewController SUPERA的子類。
考慮另一個ViewController B這是SuperB的子類。
我推動並彈出ViewController B在ViewController A中的一些特定動作之後。 在這兩個ViewControllers我使用NSNotificationObservers一些事件。 每當一個事件被觸發,即使如果我的ViewController乙我不是我仍然能夠接收到該事件中的ViewController B.
- 導航堆棧並不表明的ViewController乙。
- 如果沒有的ViewController乙在導航棧,哪裏該特別的ViewController乙存在嗎?
- 我該如何刪除/處置此ViewController B?另外我相信這是由於SuperB不能解除分配?我對嗎?
你是對的 - 很可能ViewController B沒有被取消分配。一個常見的罪魁禍首是保留週期,其中兩個對象彼此之間有很強的關係,當一個人試圖釋放時,它不會因爲另一個對象存在而繼續保留。一個常見的原因是擁有一個非弱的代表。另一種可能性,取決於iOS的版本,是NSNotification觀察者 - 這些應該在補充的UIViewController生命週期階段被移除 - 例如,如果在viewWillApppear中設置,他們應該在'viewWillDisappear'中被移除。 – bobnoble
我試過寫一個虛擬應用程序,可以完成上述場景,奇怪的是這隻發生在Xamarin.iOS中 – vin