मैं एक tableview class
बनाने के दौरान एक गलती की है, और गलती से रखा मेरी @property
रूप copy
जब मैं इसे परिभाषित:एक (प्रतिलिपि, nonatomic) एनएसएमयूटेबलएरे संपत्ति क्यों एनएसएआरआरएआर बनाती है?
@property (copy, nonatomic) NSMutableArray *words;
मैं सरणी "सही ढंग से" initialised: (ध्यान दें कि यह तीसरे प्रयास है, इसलिए अनदेखा करें
+०१२३५१६४१०: तथ्य यह है कि मैं mutableCopy और ऐसा करने का अन्य बेहतर तरीके)NSArray *fixedWords = @[@"Eeny", @"Meeny", @"Miny", @"Moe", @"Catch", @"A", @"Tiger", @"By", @"His", @"Toe"];
NSMutableArray *mutWords = [[NSMutableArray alloc] initWithArray:fixedWords];
self.words = mutWords;
हालांकि का उपयोग नहीं कर रहा हूँ जब मैं बाद में सरणी को पुन: व्यवस्थित करने के लिए आया था, यह removeObjectAtIndex लाइन पर दुर्घटनाग्रस्त हो गया
id object = [self.words objectAtIndex:fromIndexPath.row];
NSUInteger from = fromIndexPath.row;
NSUInteger to = toIndexPath.row;
[self.words removeObjectAtIndex:from];
त्रुटि संदेश
unrecognized selector sent to instance
साथ
यह पता लगाने की है कि यह खुदाई का एक बहुत लिया क्योंकि प्रतिलिपि मतलब यह है कि एक मानक (nonmutable) NSArray के निर्माण में NSMutableArray परिणाम बताए। क्या कोई समझा सकता है कि यह सही व्यवहार क्यों है?
'@property (प्रतिलिपि, nonatomic) एनएसएमयूटेबलएरे * शब्द; 'प्रतिलिपि का कोई उपयोग नहीं, आप बनाए रखने के उपयोग shuld। –
या –
के संभावित डुप्लिकेट को बनाए रखने के बजाय मजबूत [उपयोग करने योग्य कॉपीविथज़ोन: कस्टम क्लास पर इसे अपरिवर्तनीय बनाता है] (http://stackoverflow.com/questions/14841130/using-mutablecopywithzone-on-custom-class-makes-it-immutable) –