2012-04-06 6 views
15

मुझे पता है कि जब आप किसी ऑब्जेक्ट के उप-वर्ग के initWithCoder विधि को लिखते हैं जो एनएससीओडी लागू करता है तो आपको सुपर initWithCoder (super init के बजाय) कॉल करना होगा, लेकिन क्या मुझे एनकोडविथकोडर के कार्यान्वयन में super encodeWithCoder पर कॉल करना होगा?क्या एनएससीओडी लागू करने वाली ऑब्जेक्ट को उप-वर्गीकृत करते समय [सुपर एन्कोडविथकोडर] को कॉल करना आवश्यक है?

उत्तर

24

आप एक वर्ग एन्कोडिंग का समर्थन करता है कि से विरासत है, यह आम तौर पर अपनी encodeWithCoder: विधि में [super encodeWithCoder:] उपयोग करने के लिए, जितना [super initWithCoder:]initWithCoder: विधि में इस्तेमाल किया जा रहा है adviseable है।

प्रलेखन:NSCoding Protocol Reference

संदर्भ:http://www.cocoadev.com/index.pl?NSCoder

अगर वर्ग एक कक्षा है कि (NSObject अनुरूप नहीं है) तो आप को शामिल करना चाहिए के अनुरूप से विरासत [encodeWithCoder:] तरीका।

// <NSCoding> protocol methods 

-(void)encodeWithCoder:(NSCoder*)coder 
{ 
    [super encodeWithCoder:coder]; 
    /* 
    [coder encodeObject: theNSStringInstanceVariable]; 
    [coder encodeObject: theNSDictionaryInstanceVariable]; 
    [coder encodeValueOfObjCType:@encode(BOOL) at:&theBooleanInstanceVariable]; 
    [coder encodeValueOfObjCType:@encode(float) at:&theFloatInstanceVariable]; 
    */ 
} 
+2

तुम्हें बहुत धन्यवाद :) – XaitormanX

+0

@XaitormanX आपका स्वागत है, मेरे दोस्त! :-) –

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