2017-03-15 67 views
0

說,我正在建立一個自定義UISegmentedControl通過佈置幾個按鈕並描述他們的狀態。我將TouchUpInside聽衆附加到他們,以便在選擇時相應地更改他們的外觀。問題是,我不知道在哪裏刪除這些監聽器,以避免內存泄漏。 UIViewUIControl沒有ViewDidDisappearUIViewController我正在使用它來刪除偵聽器,當它變得不可見時。如何清理自定義控件?

我應該在哪裏刪除這些聽衆?

回答

1

我建議在看時會調用下面,看看他們是否適合您的需求的UIView:

didAddSubview :, willRemoveSubview:根據需要跟蹤子視圖的添加和移除實現這些方法。 willMoveToSuperview:, didMoveToSuperview根據需要實現這些方法,以跟蹤視圖層次結構中當前視圖的 移動。

willMoveToWindow:,didMoveToWindow根據需要實現這些方法 可以跟蹤視圖到另一個窗口的移動。

(以上內容來自該SO後採取:SO Reply

這將允許你按照什麼「上海華」與視圖做,而當它被解僱,你應該能夠運行您的清潔up代碼。

0

你不需要刪除你的「聽衆」。 UIControl不支持對目標的強引用 - 從文檔中獲取addTarget(_: action: for:)

控件不保留目標參數中的對象。在連接到控件時,您有責任保持對目標對象的強烈引用。

+0

在xamarin的情況下是否屬實? – nicks

+0

我不知道,對不起,我沒有注意到Xamarin標籤。如果它在引擎蓋下使用UIKit,那麼是的 – jrturton