簡體   English   中英

如何在UIView中刪除NSNotification的觀察者?

[英]How to remove an observer for NSNotification in a UIView?

我在initWithFrame:下創建的自定義UIView中添加了一個觀察者initWithFrame:

[[NSNotificationCenter defaultCenter] addObserver:self 
         selector:@selector(updateZipFromLocation:) 
          name:@"zipFoundFromLocation" 
           object:nil];

問題是,這個視圖是一個子視圖。 再次加載視圖時,它再次調用initWithFrame消息,從而添加兩個觀察者,依此類推。 當視圖消失時,如何移除觀察者? 因為它是一個UIView ,它說viewWillDisappear:(BOOL)animated不是一個有效的方法。 有任何想法嗎?

您已經說過initWithFrame:被多次調用,所以我認為這意味着視圖正在被銷毀並重新創建。 您可以在dealloc刪除視圖作為觀察者,當任何人不再保留視圖時,將調用該視圖:

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [super dealloc];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM