9

क्या NSNotification एस की अधिक "जेनेरिक" (और मेरे ओपियन अधिक मजबूत) की बजाय केवीओ का उपयोग करने का कोई फायदा है?एनवीएनोटिफिकेशन बनाम केवीओ

+0

क्या आप केवीओ का मजबूत हिस्सा मजबूत नहीं पाते हैं? – hooleyhoop

+0

डाउनसाइड्स पर [कोको बिल्डर लिंक] (http://www.cocoabuilder.com/archive/cocoa/167622-kvo-and-the-observevalueforkeypath-bottleneck.html) में अच्छी तरह से चर्चा की गई है, मैंने अपने जवाब में दिया। ज्यादातर समस्याएं इस तथ्य से उत्पन्न होती हैं कि आपको एक ही समारोह में सभी केवीओ नोटिफिकेशन को संभालना होता है, जो सबक्लासिंग करते समय भंगुर होता है। – zoul

+0

ठीक है, मुझे इसके साथ असहमत होना होगा। केवीओ subclassing जब भंगुर नहीं है - एक चयनकर्ता के रूप में चयन के रूप में एक हैक है और यह नहीं है कि यह क्या है। – hooleyhoop

उत्तर

7

मुझे जुनून के साथ केवीओ से नफरत है, मुख्य रूप से क्योंकि यह मुझे एक ही हैंडलर के माध्यम से सभी केवीओ अधिसूचनाओं को रूट करने के लिए मजबूर करता है। यदि मेरे पास विकल्प है तो मैं जो भी उपलब्ध हूं उसका उपयोग करता हूं। लेकिन केवीओ के पास मानक पुस्तकालय में कई कक्षाओं के लिए उपलब्ध होने का विशिष्ट लाभ है - यदि आप मानक पुस्तकालय से कुछ कक्षाओं में संपत्ति परिवर्तनों का निरीक्षण करना चाहते हैं, तो केवीओ आपका एकमात्र विकल्प हो सकता है। केवीओ और विभिन्न अवलोकन और बाध्यकारी विकल्पों के बारे में एक very interesting thread on Cocoa Builder है।

(मैं जोड़ने चाहिए कि मैं केवल एक उच्च स्तरीय अवलोकन इंटरफेस के रूप में KVO साथ शिकंजा है। मुझे लगता है कि अन्य प्रौद्योगिकियों, विशेष रूप से बाइंडिंग के लिए पाइपलाइन के रूप में बहुत अच्छा है।)

4

आदेश NSNotifications कार्य करने की ऐसी ही कुछ का उपयोग करने के केवीओ को आपको हर संपत्ति के लिए कस्टम बॉयलरप्लेट एक्सेसर विधियों को लिखना होगा जिन्हें आप देखना चाहते थे।

यह केवीओ का उपयोग करने से बहुत कम "जेनेरिक" और बहुत कम मजबूत है।

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