2011-02-02 17 views
10

मैं एक ई-पुस्तक पाठक विकसित कर रहा हूं और मुझे निम्नलिखित समस्या का सामना करना पड़ा। मैं एनएसएनोटिफिकेशन पोस्ट करने के लिए एक आईबीएक्शन विधि का उपयोग कर रहा हूं जो बटन को टैप करने के बाद एक एक्शन विधि का आह्वान करता है। यह पहली बार बिल्कुल ठीक काम कर रहा है ... IBAction विधि को बटन पर टैप करने के लिए evry time कहा जाना चाहिए। इस क्रिया को पूरा करने के बाद, मुझे अपने होम पेज पर जाना होगा और फिर वापस आएं और बटन को फिर से क्लिक करें। यह वह जगह है जहां मुझे समस्या का सामना करना पड़ रहा है। विधि दूसरी बार से एक बार से अधिक कहा जाता है हो रही है और यह संख्या सिर्फ बढ़ती रहती है .. कृपया मुझे इस के साथ मदद ....NSNotification कई बार उठाया जा रहा है

//IBAction Method 
if (sender.tag == PenToolAction) { 

    GLogInfo(@"Pen tool tapped"); 
    [self hideSelf]; 
    [[NSNotificationCenter defaultCenter] postNotificationName:PenToolActionInitialized object:nil]; 
} 
+0

कहाँ '[[NSNotificationCenter defaultCenter] addObserver रखा है जारी किया गया :. ..] 'कॉल? – Jilouc

+0

मैंने इसे रिसीवर कक्षा के ViewDidLoad विधि में रखा है। –

उत्तर

35

आप एक विधि को कई बार कहा जाता है में अधिसूचना पर्यवेक्षक जोड़ते हैं तो आपको अधिसूचना कई बार भी प्राप्त होगी।

या तो [[NSNotificationCenter defaultCenter] addObserver:...] को init विधि में डालने का प्रयास करें या ठीक पहले [[NSNotificationCenter defaultCenter] removeObserver:self] पर कॉल करें।

+2

बिल्कुल सही धन्यवाद! – Elmo

+0

धन्यवाद जिलोक! –

+0

मेरी इच्छा है कि सेब बेहतर होगा। और मेरी इच्छा है कि वहां बेहतर सार्वजनिक एपीआई था ताकि आप यह निर्धारित कर सकें कि कोई ऑब्जेक्ट पहले से ही किसी अधिसूचना में पंजीकृत है या नहीं। – LightningStryk

1

आपको समर्थन के लिए बहुत बहुत धन्यवाद .. मुझे अपने प्रश्न का समाधान मिला ... मेरे कोड में मुख्य अपराधी स्मृति प्रबंधन का मुद्दा है ... मैंने एक्स-कोड विश्लेषक का उपयोग करने के लिए उपयोग किया है लीक किया और पाया कि मैं एक मुख्य चर जारी करने के लिए भूल गया ..... I'v चर और अब मेरी कोड ठीक काम कर रहा है ....

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