說,我正在建立一個自定義UISegmentedControl
通過佈置幾個按鈕並描述他們的狀態。我將TouchUpInside
聽衆附加到他們,以便在選擇時相應地更改他們的外觀。問題是,我不知道在哪裏刪除這些監聽器,以避免內存泄漏。 UIView
和UIControl
沒有ViewDidDisappear
像UIViewController
我正在使用它來刪除偵聽器,當它變得不可見時。如何清理自定義控件?
我應該在哪裏刪除這些聽衆?
說,我正在建立一個自定義UISegmentedControl
通過佈置幾個按鈕並描述他們的狀態。我將TouchUpInside
聽衆附加到他們,以便在選擇時相應地更改他們的外觀。問題是,我不知道在哪裏刪除這些監聽器,以避免內存泄漏。 UIView
和UIControl
沒有ViewDidDisappear
像UIViewController
我正在使用它來刪除偵聽器,當它變得不可見時。如何清理自定義控件?
我應該在哪裏刪除這些聽衆?
我建議在看時會調用下面,看看他們是否適合您的需求的UIView:
didAddSubview :, willRemoveSubview:根據需要跟蹤子視圖的添加和移除實現這些方法。 willMoveToSuperview:, didMoveToSuperview根據需要實現這些方法,以跟蹤視圖層次結構中當前視圖的 移動。
willMoveToWindow:,didMoveToWindow根據需要實現這些方法 可以跟蹤視圖到另一個窗口的移動。
(以上內容來自該SO後採取:SO Reply)
這將允許你按照什麼「上海華」與視圖做,而當它被解僱,你應該能夠運行您的清潔up代碼。
你不需要刪除你的「聽衆」。 UIControl
不支持對目標的強引用 - 從文檔中獲取addTarget(_: action: for:)
:
控件不保留目標參數中的對象。在連接到控件時,您有責任保持對目標對象的強烈引用。
在xamarin的情況下是否屬實? – nicks
我不知道,對不起,我沒有注意到Xamarin標籤。如果它在引擎蓋下使用UIKit,那麼是的 – jrturton