मैं अपने व्यू-आधारित-एनएसटीबलव्यू को पहले से जेनरेट की गई तालिकासेल दृश्यों का पुन: उपयोग नहीं करना चाहूंगा जो दायरे से बाहर स्क्रॉल किए गए हैं। मुझे लगता है कि यह UITableView के साथ dequeueReusableCellWithIdentifier ओवरराइटिंग के साथ संभव होगा: शून्य वापस करने के लिए। क्या एनएसटीबल व्यू के लिए समान समाधान है?NSTableView को पुन: उपयोग करने के लिए कैसे करें TableCellViews
-
मेरे पृष्ठभूमि: मैं एक काफी जटिल दृश्य-आधारित-tableView हमेशा की तरह ManagedObjects करने के लिए बाध्य (यानी टेबल सामग्री, -selection और -sortdescriptor एक arraycontroller और tableCellView-तत्वों के लिए बाध्य कर रहे हैं ऑब्जेक्ट बाध्य करें)।
तालिका में लगभग 20 कॉलम हैं लेकिन अधिकांश 400 पंक्तियां हैं। स्क्रॉलिंग वास्तव में धीमी है, लेकिन टाइम-प्रोफाइलिंग इंगित करती है कि धीमापन का कोई भी स्रोत मौजूद नहीं है (सबसे बड़ी एकल विधि-कॉल में लगभग 5% समय लगता है)। मेरे प्रबंधित ऑब्जेक्ट के व्युत्पन्न/कस्टम गुणों को कैश करने के बाद बहुत अधिक प्रदर्शन-बढ़ावा के बिना, अब मैं विचारों को कैश करने की कोशिश कर रहा हूं (तालिका दृश्य के लगातार पुनरुत्थान से बचने के लिए जब दृश्य दृश्य में आता है)।
मैं इस समय कोशिश कर रहा हूं कि तालिका-सामग्री को बाध्य न करें, लेकिन NSDatasource-प्रोटोकॉल का उपयोग करके मेरे विचार प्राप्त करें।
-(NSView*) tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
यदि वे मौजूद हैं तो मैं कैश किए गए TableCellViews को वापस करना चाहूंगा। अन्यथा मैं के बाद से makeViewWithIdentifier बार देखा गया है कि पहले से ही मुझे द्वारा कैश कर रहे हैं वापस आ सकते हैं के माध्यम से
[self.table makeViewWithIdentifier:... owner:self];
एक नया बना, टेबल-सामग्री गलत कोशिकाओं के साथ में गड़बड़ हो जाता है।
प्रदर्शन काफी इस दृष्टिकोण के साथ बेहतर है ...
-
बनाने स्क्रॉल अधिक performant भी appriciated कर रहे हैं पर अन्य विचारों।
मुझे यह जानने में दिलचस्पी होगी कि आपको इसके साथ कहीं भी मिला है या नहीं। मुझे लगता है कि मेरे विपरीत समस्या है कि मेरे NSTableView कुछ कारणों से * कोशिकाओं का पुन: उपयोग नहीं कर रहा है। मैंने PXListView की कोशिश की, लेकिन उसमें खराब प्रदर्शन और बहुत सारी बग थी, इसलिए मैं एनएसटीबल व्यू के साथ रहना चाहता हूं लेकिन यह काम करता हूं कि इसे कैश दृश्य कैसे बनाएं, जो मुझे लगता है कि ऐसा करना है। जहां तक आपकी समस्या है, क्या आप प्रत्येक दृश्य के लिए एक अद्वितीय पहचानकर्ता बनाने में सक्षम होंगे या क्या यह भयानक स्मृति उपयोग का कारण बन जाएगा? – danpalmer