2012-01-17 6 views
15

मेरे पास निम्न कोड है जो दृश्य को लोड करने में पर्यवेक्षक जोड़ता है।addObserverForName का उपयोग करते समय पर्यवेक्षक को हटाएं: का उपयोग कर

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [[NSNotificationCenter defaultCenter] addObserverForName:@"com.app.livedata.jsonupdated" 
                 object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notif) { 
                  NSLog(@"JSONUPDATED"); 
                 }]; 
} 

और यह ठीक है। हालांकि जब दृश्य अनलोड किया जाता है और मैं पुष्टि करता हूं कि डेलोक को अधिसूचना कहा जाता है तो अभी भी गोलीबारी हो रही है।

इस पर्यवेक्षक को निष्क्रिय करने के लिए कोई विधि प्रतीत नहीं होती है?

उत्तर

25

लगता है कि समाधान दृश्य में ऑब्जेक्ट को ट्रैक करना है और फिर आप इसे डेलोक विधियों में संदर्भित कर सकते हैं।

id observer = [[NSNotificationCenter defaultCenter] addObserverForName: /* ... */ ]; 

और फिर निम्नलिखित के रूप में हटा दें:

[[NSNotificationCenter defaultCenter] removeObserver:observer]; 
observer = nil; 
+1

यह एक करता है, तो 2 विभिन्न वर्गों में एक ही पर्यवेक्षकों है और पर्यवेक्षक हटा दिया जाता है कभी नहीं काम नहीं करता है: / –

संबंधित मुद्दे