मुझे नहीं लगता कि आपको अपने सुपर क्लास पर जागृत करने के लिए कॉल करना है।
this देखें।
संपादित
मैं सिर्फ एक त्वरित परीक्षण भाग गया, यहाँ है परिणाम:
परिदृश्य 1: MainWindow.xib एक UIViewController उपवर्ग TestingAwakeFromNibViewController
है, जो इसे खुद नोक फ़ाइल TestingAwakeFromNibViewController.xib
है है है।
परीक्षण AwakeFromNibViewController में एक UIButton आउटलेट बीटीएन 3 कहा जाता है। परीक्षण निम्नलिखित कोड:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Btn3 %@",btn3);
NSLog(@"viewDidLoad");
}
-(void) awakeFromNib
{
[super awakeFromNib];
NSLog(@"Btn3 %@",btn3);
NSLog(@"awakeFromNib");
}
प्रिंट चाहेंगे:
Btn3 (null)
AwakeFromNib
Btn3 <UIRoundedRectButton: 0x64088e0; frame = (114 211; 72 37); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x6408890>>
ViewDidLoad
परिदृश्य 2: xib फ़ाइल निकाल रहा है, MainWindow.xib अंदर TestingAwakeFromNibViewController करने के लिए एक बेटे के रूप में एक UIView जोड़ने, और जोड़ने UIView के उप-दृश्य के रूप में UIButton (और UIButton आउटलेट को TestingAwakeFromNibViewController के उपयुक्त आउटलेट से कनेक्ट करना)।
अब चल रहा है इसके बाद के संस्करण कोड प्रिंट होगा:
Btn3 <UIRoundedRectButton: 0x4e31c30; frame = (114 211; 72 37); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x4e31be0>>
viewDidLoad
Btn3 <UIRoundedRectButton: 0x4e31c30; frame = (114 211; 72 37); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x4e31be0>>
awakeFromNib
viewDidLoad AwakeFromNib से पहले मतलब।
तीसरा परिदृश्य: दूसरे के रूप में एक ही है, बस [super awakeFromNib];
Btn3 <UIRoundedRectButton: 0x4e0ddf0; frame = (114 211; 72 37); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x4e0dda0>>
awakeFromNib
बुला अब viewDidLoad के बिना भी नहीं कहा जाता हो रही है।
तो, ऐसा लगता है कि अलग-अलग परिदृश्य अलग-अलग कार्रवाइयों के लिए बुला रहे हैं, और हमें उस कार्य के अनुसार खुद को तैयार करने की आवश्यकता है जिस पर हम काम कर रहे हैं।
मुझे यकीन नहीं है कि आप सही हैं। इसे देखें: http: //stackoverflow.com/questions/377202/which-should-i-use-awakefromnib-or-viewdidload – Idan
तो मैं कह रहा हूं कि मैं कहां से संघर्ष कर रहा हूं? तथ्य यह है कि जब स्मृति चेतावनी दृश्य नियंत्रकों को देखते हैं (यदि यह दिखाई नहीं दे रहा है) शून्य और deallocated पर सेट है। और जब यह फिर से दिखाई देता है तो नियंत्रक अपने दृश्य को अपनी xib फ़ाइल से लोड करता है और 'self.view = viewLoadedFromXib' सेट करता है, इसलिए देखेंDidLoad को फिर से कॉल किया जाता है, जबकि यह स्वयं को कॉन्फ़िगर नहीं करता है, फिर से जागृत नहीं होता है। – Zapko
यदि आप मुझ पर विश्वास नहीं करते हैं या मैं स्पष्ट रूप से नहीं लिखता हूं तो आप [दस्तावेज़ीकरण] (http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html%23// देख सकते हैं apple_ref/doc/uid/TP40007457-CH101-SW19) स्वयं। वैसे भी यह अधिक उपयोगकर्ता भर होगा। – Zapko