簡體   English   中英

iOS應用程序崩潰,因為KVO觀察者不再觀察

[英]iOS App crashes because KVO observer is not observing anymore

有沒有辦法知道是否有對象在視圖控制器的鍵路徑上偵聽。 例如,我的視圖控制器中有

[tabBarController addObserver:self
     forKeyPath:@"selectedViewController"
     options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
     context:&PrivateKVOContext
]; (edited)

我想知道我的tabbarcontroller是否可以知道我的viewcontroller是否在該鍵路徑上進行監聽

原因是因為我的應用程序崩潰是因為選項卡欄控制器仍然認為我的視圖控制器正在偵聽該關鍵路徑,即使我的視圖控制器已被釋放

在我的viewcontroller的dealloc方法中,我將[tabBarController removeObserver:self forKeyPath:@"selectedViewController”];為觀察者

可惜不是。 無法檢查當前哪些對象正在觀察其他對象。

因此,通常建議您在放置removeObserver:的方法的補充方法中放置addObserver:以便可靠地將它們調用相同的次數。

在這種情況下,由於您將其放入dealloc(在視圖控制器生命周期結束時調用),因此應將addObserver:放在init方法中,該方法將在開始時調用。

這取決於在代碼中是否真正使用了觀察者,請嘗試以下操作:

- (void)dealloc {

    @try {
        [[NSNotificationCenter defaultCenter] removeObserver:Notification_Location_Ready];
    } @catch (NSException *exception) {

    } @finally {

    }
}

暫無
暫無

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

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