2015-06-03 7 views
12

मैं एक कस्टम UITableView उपवर्ग जिसमें मैं +accessInstanceVariablesDirectly ओवरराइड आदेश नहीं सेटर KVC का उपयोग कर सेट नहीं किया जा सकता के साथ विशेषताओं को सुनिश्चित करने के NO वापस लौटाना होगा।KVC UITableView में उपवर्ग पहुँच के साथ दुर्घटना के कारण सक्षम

दृश्य तालिका पदानुक्रम से इस तालिका दृश्य को हटाते समय, ऐप दुर्घटनाग्रस्त हो जाता है - कभी-कभी - और अब अजीब भाग के लिए: केवल तभी पहुंच योग्यता सक्षम होती है! (यानी एक्सेसिबिलिटी इंस्पेक्टर दिखाई दे रहा है, या आपके पास भौतिक डिवाइस पर एक्सेसिबिलिटी सक्षम है)

यदि मैं +accessInstanceVariablesDirectly ओवरराइड नहीं करता हूं, तो सब कुछ ठीक काम करता है। मुझे लगता है कि UITableView सीधे कुछ इंस्टेंस चरों तक पहुंचने पर निर्भर करता है - लेकिन फिर इस विधि का क्या मतलब है, अगर मैं इसका उपयोग करके सुपरक्लास को तोड़ सकता हूं? +automaticallyNotifiesObserversForKey: जैसे प्रति व्यवहार इस व्यवहार को निर्दिष्ट करने का कोई तरीका है? हालांकि मैं इस तथ्य से परेशान हूं कि यह समस्या केवल तब मौजूद है जब अभिगम्यता सक्षम है।

मैंने विभिन्न उपकरणों के साथ परियोजना का विश्लेषण करने की कोशिश की, लेकिन सफलता के बिना।

आप here समस्या को पुन: उत्पन्न करने वाली एक न्यूनतम परियोजना पा सकते हैं। मैं किसी भी संकेतक की सराहना करता हूं कि यह क्यों हो रहा है या फिर भी मैं क्या हासिल करना चाहता हूं।

+0

में अपने कोड '[: @selector (डीबग) withObject: afterDelay शून्य: स्वयं performSelector 0.1] की इस पंक्ति के बारे में प्रकट होता है;'। क्या आप इसके बजाय '[स्वयं प्रदर्शन चयनकर्ता ऑनमाइन थ्रेड: ऑब्जेक्ट: प्रतीक्षा करें नहीं' कर सकते हैं? मैं अपने मैक पर नहीं हूं और मुझे आश्चर्य है कि ऐसा इसलिए है क्योंकि दृश्य संभवतः पृष्ठभूमि थ्रेड पर सेट किया गया है –

+0

'-performSelector: 'उसी चयनक पर अपना चयनकर्ता निष्पादित करता है जिसे इसे कहा जाता है। इसके अलावा यह बग को पुन: पेश करने के लिए सिर्फ 'ऑप्टिमाइज़ेशन' है, मेरे असली एप्लिकेशन में विचारों को उपयोगकर्ता कार्रवाई की प्रतिक्रिया के रूप में प्रतिस्थापित किया जाता है जो स्पष्ट रूप से मुख्य धागे पर होता है, –

+0

मैं आपके द्वारा सिम्युलेटर (आईओएस 8.3 iphone5s) में दिए गए डेमो को चलाता हूं। , यह अच्छी तरह से काम करता है, कोई दुर्घटना नहीं! –

उत्तर

2

यह समस्या को ठीक किया जाना आईओएस 9.

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