2011-10-17 15 views
7

में फ़ंक्शंस मैं loadView: फ़ंक्शन (यह फ़ंक्शन UIView में है) की तंत्र को समझ नहीं पा रहा हूं।loadView: UIView आईओएस

मैं नीचे के रूप में प्रोजेक्ट बना लिया:

  • पहले, मैं एक iPhone की खिड़की आधारित परियोजना बनाया।
  • फिर, मैंने UIView उपclass
  • अगला बनाया, मैंने UIViewController सबक्लास बनाया, बिना xib के।
  • आखिरकार, मैंने तीसरे चरण में बनाए गए वर्ग के loadView: फ़ंक्शन में, मैं UIViewController ऑब्जेक्ट (तीसरे चरण में) के व्यू वेरिएबल के रूप में UIView ऑब्जेक्ट (दूसरे चरण में बनाए गए वर्ग में) को निर्दिष्ट करता हूं।

अगर मैं अंतिम चरण को छोड़ देते हैं, और loadView में बयान NSLog(@"test LoadView"); जगह: समारोह, तो जब परियोजना चलाया जाता है, बयान NSLog(@"test LoadView"); लगातार उत्पन्न होता है, समय में परिणाम अतिप्रवाह है।

कृपया मुझे समझाएं! धन्यवाद!

उत्तर

15

loadView: केवल तब देखा जाता है जब दृश्य संपत्ति nil होती है। प्रोग्रामेटिक रूप से विचार बनाते समय इसका उपयोग करें। default: कोई सबव्यूव के साथ UIView ऑब्जेक्ट बनाएं। पूर्व के लिए -

- (void)loadView 
{ 
    UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; 
    [view setBackgroundColor:color]; 
    self.view = view; 
    [view release]; 
} 

loadView: विधि लागू करने से, आप डिफ़ॉल्ट स्मृति प्रबंधन व्यवहार में हुक। यदि स्मृति कम है, तो दृश्य नियंत्रक को didReceiveMemoryWarning संदेश प्राप्त हो सकता है। यह देखने के लिए डिफ़ॉल्ट कार्यान्वयन जांच करता है कि दृश्य उपयोग में है या नहीं। यदि इसका दृश्य दृश्य पदानुक्रम में नहीं है और दृश्य नियंत्रक loadView: विधि लागू करता है, तो इसका दृश्य जारी किया जाता है। बाद में जब दृश्य की आवश्यकता होती है, तो दृश्य बनाने के लिए loadView: विधि को फिर से बुलाया जाता है।

सुनिश्चित नहीं हैं कि तुम क्यों loadView: उपयोग करना चाहते हैं, लेकिन आप में viewDidLoad:

संदर्भ बस के रूप में ज्यादा कर सकते हैं -

  1. Why is this iPhone program not calling -loadView?
  2. loadView

आशा इस मदद करता है।

+0

आपकी मदद के लिए धन्यवाद! मेरे पास एक प्रश्न है: यदि दृश्य नियंत्रक विचारों को व्यवस्थित करने के लिए निब फ़ाइल और आईबीओलेट चर का उपयोग करता है, यदि यह प्राप्त होता है तो रीसीव मेमरी चेतावनी संदेश, वैसे भी विचारों को रिलीज़ करने के लिए है, फिर जरूरत पड़ने पर बाद में लोड करें। धन्यवाद! –

+0

हां संभोग। जब तक आपने अपने UI तत्वों को 'बनाए रखने' के रूप में घोषित किया है। अधिक के लिए यहां देखें - http://stackoverflow.com/questions/1250518/what-happens-if-i-dont-retain-iboutlet –

+0

प्रिय श्रीकर, मुझे आईबीओलेट वैरिएबल में निब फ़ाइल को पुनः लोड करने का तरीका नहीं पता इसे जारी करने के बाद। और आईबीओलेटलेट वैरिएबल किस स्थिति में पुनः लोड किया जाता है? आपकी सहायताके लिए धन्यवाद! –