2009-08-25 16 views
5

यदि कक्षा अधिसूचना पोस्ट करने के बाद एक कस्टम वर्ग है, तो पर्यवेक्षक से संबंधित चयनकर्ता को दो बार बुलाया जाता है .. क्या कोई बेहतर समाधान है ताकि चयनकर्ता को केवल एक बार बुलाया जा सके?क्यों NSNotification में पर्यवेक्षक दो बार बुलाया ....?

उत्तर

3

यदि पर्यवेक्षक वर्ग नाम से अधिसूचना के लिए पंजीकृत है, लेकिन किसी विशिष्ट वस्तु के खिलाफ नहीं है, तो इसे कई संदेश प्राप्त होंगे, क्योंकि मूल वस्तु के बावजूद अधिसूचना हर बार लागू की जाएगी।

इसी प्रकार, यदि पर्यवेक्षक किसी विशिष्ट वस्तु के खिलाफ पंजीकृत है, लेकिन नामित अधिसूचना के खिलाफ नहीं, तो उस वस्तु से संबंधित अधिसूचना हर बार मैसेज की जाएगी।

1-वर्ग जहां addObserver पंजीकरण: http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html

8

यदि चयनकर्ता को दो बार बुलाया जाता है, तो संभवतः आपने इसके लिए दो बार पंजीकरण किया है।

+0

समस्या यह है कि निब में दो नियंत्रण हैं, जिन्हें एक ही कक्षा में अनुकूलित किया गया है। और चूंकि पर्यवेक्षक उस वर्ग के जागृत FromNib() में पंजीकृत है, इसलिए चयनकर्ता को एकल पोस्ट के लिए दो बार भी बुलाया जाता है। :( –

1

क्या मेरे लिए काम किया चीजों के एक जोड़े था -

एक दूर के राज्य में होने वाले परिवर्तनों के बारे में सूचित किया जा रहा का एक वैकल्पिक तंत्र, कुंजी मान अवलोकन है कॉल किया जाता है, एक विशिष्ट वस्तु जोड़ने के लिए था।

2-उस कक्षा में जहां पोस्ट नोटिफिकेशन कॉल उसी प्रकार की वस्तु के रूप में बनाई गई है।

मैं भी एक पोस्ट प्रेषण में अपना पोस्ट नोटिफिटैटन भी करता हूं, लेकिन यह आपकी समस्या से संबंधित नहीं है।

0

जांचें कि क्या एडॉब्सर्वर केवल एक बार सेट है या नहीं। मेरे मामले में, addObserver पाश दो बार भाग गया, इसलिए बग।

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