के साथ UIView में प्रवेश करने का उचित तरीका मेरे पास कुछ कस्टम बनाए गए UIViews हैं जो लेआउट के लिए .xib फ़ाइलों का उपयोग करते हैं, और अतिरिक्त सेटअप के लिए बैकिंग क्लासेस का उपयोग करते हैं। मैं इन कक्षाओं को एलोक/इनिट का उपयोग करके और लोडिंग को अपने कस्टम इनिट विधि में नामित करता हूं लेकिन ऐसा करने में स्मृति रिसाव होता है। किसी ने कहा कि alloc भाग वास्तव में एक आत्म उद्देश्य यह है कि इतना लीक किया गया था मैं इस एक के लिए मेरी init विधि समायोजित बनाया:.xib और बैकिंग क्लास
- (id)init
{
[self autorelease];
self = [[[[NSBundle mainBundle] loadNibNamed:@"AssignmentView" owner:nil options:nil] lastObject] retain];
[self setupBranding];
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
[self addGestureRecognizer:tapRecognizer];
[tapRecognizer release];
return self;
}
हालांकि, अब जब मैं कोड मैं रिटर्निंग इस चेतावनी मिलती है "का विश्लेषण चलाने 'स्वयं' जबकि यह '[(सुपर या स्वयं) init ...]' के परिणाम के लिए सेट नहीं है। तो मेरा सवाल यह है कि बैकिंग क्लास के साथ कस्टम UIViews करने का सही तरीका क्या है?
चूंकि यह पूछा गया था कि मैं इस तरह इस उपरोक्त कोड का इस्तेमाल किया था:
AssignmentView * assignmentView = [[AssignmentView alloc] init];
[self.view addSubview:assignmentView];
आम तौर पर, यदि आप किसी xib से कोई दृश्य लोड करते हैं, तो आपको इसे जो भी वर्ग बना रहा है, उसे 'loadNibNamed' के माध्यम से लोड करना चाहिए और फिर इसे' जागृत FromNib' विधि में सेट करना चाहिए, 'init' को स्पर्श भी नहीं करना चाहिए । वैसे भी यह मेरा अनुभव रहा है। क्या आप शायद कुछ कोड जोड़ सकते हैं जहां आप दृश्य को तुरंत चालू कर रहे हैं, और आपकी 'जागृत FromNib' विधि? –
मुझे लगता है कि आप अपनी विधि के शीर्ष पर केवल 'self = [super init]' जोड़ देंगे। पॉल सही है, हालांकि आप आम तौर पर आंतरिक रूप से निब लोडिंग नहीं कर रहे हैं। – Dustin
धन्यवाद, मैं पूरे लोड से बचने की कोशिश कर रहा हूं और इसके बजाय [[MyView alloc] init] का उपयोग करें, लेकिन अगर मुझे इसे फिर से काम करना है और इसके बजाय loadNibNamed का उपयोग करना है तो मुझे लगता है कि मुझे करना है। मेरे पास जागृत नहीं है FromNib विधि लेकिन init में सब कुछ वहाँ जाना होगा। –