मैं एक आईफोन ऐप पर काम कर रहा हूं जिसमें वेब से ली गई डेटा के साथ एक बहुत बड़ा UITableView है, इसलिए मैं इसकी रचना और उपयोग को अनुकूलित करने की कोशिश कर रहा हूं।आईफोन - dequeueReusableCellWithIdentifier उपयोग
मुझे पता चला कि dequeueReusableCellWithIdentifier बहुत उपयोगी है, लेकिन इसका उपयोग करके कई स्रोत कोड देखने के बाद, मुझे आश्चर्य है कि अगर मैं इस फ़ंक्शन का उपयोग करता हूं तो यह अच्छा है।
यहाँ लोगों को आमतौर पर क्या करना है:
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"];
// Add elements to the cell
return cell;
और यहाँ जिस तरह से मैंने किया है:
// The cell row
NSString identifier = [NSString stringWithFormat:@"Cell %d", indexPath.row];
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell != nil)
return cell;
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:identifier];
// Add elements to the cell
return cell;
अंतर यह है कि लोगों को हर कोशिका के लिए एक ही पहचानकर्ता का उपयोग, इसलिए एक dequeuing है केवल एक नया आवंटित करने से बचाता है।
मेरे लिए, कतार का बिंदु प्रत्येक सेल को एक अद्वितीय पहचानकर्ता देना था, इसलिए जब ऐप पहले से प्रदर्शित सेल के लिए पूछता है, न तो आवंटन और न ही तत्व जोड़ना होता है।
ठीक में मुझे नहीं पता कि कौन सा सबसे अच्छा है, "सामान्य" विधि तालिका के मेमोरी उपयोग को कोशिकाओं की सटीक संख्या तक सीमित करती है, जिससे मैं जिस विधि का उपयोग करता हूं, वह गति का पक्ष लेता है क्योंकि यह सभी गणना करता है कोशिकाएं, लेकिन बड़ी स्मृति खपत का कारण बन सकती हैं (जब तक कि कतार में आंतरिक सीमा न हो)।
क्या मैं इसे इस तरह उपयोग करना गलत हूं? या क्या यह सिर्फ अपनी जरूरतों के आधार पर डेवलपर तक है?
आप इस तथ्य के बारे में सही हैं कि मेरी विधि के साथ एक सरणी नौकरी कर सकती है। ~ 100 कोशिकाएं एक बार में आवंटित स्मृति की 'बहुत' बड़ी मात्रा का प्रतिनिधित्व करती हैं? – Jukurrpa
ठीक है, मैंने सामान्य विधि के लिए बदल दिया है (जो जटिल है जब एक पंक्ति में कई सबव्यूज़ होते हैं), और कम स्मृति खपत के अलावा, स्क्रॉलिंग समग्र रूप से चिकनी लगती है, मुझे यकीन नहीं है कि क्यों। वैसे भी सलाह के लिए धन्यवाद! – Jukurrpa
@progrmr ... धन्यवाद ... अवधारणा को साफ़ करने के लिए .. यह वास्तव में अच्छा है ... मैं भी वही गलती कर रहा था .. :) –