Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Explain awakeFromNib and initwithFrame: usage

Tags:

objective-c

I am going through the Stanford iPhone dev lectures on iTunes and ran into this in Lecture 5.

We are trying to ensure a redraw will be done when the device rotates. I have two questions related to this:

  1. What is awakeFromNib? There's no call to this method in the rest of the code. How was it triggered?
  2. What does the codes inside initwithFrame: do?

.

-(void)setup 
{
      self.contentMode = UIViewContentModeRedraw;
}

-(void)awakeFromNib
{
    [self setup];
}

-(id)initWithFrame:(CGRect)frame
{
     self=[super initWithFrame:frame];
     if (self) {
        [self setup];
     }
     return self;
}
like image 455
William Sham Avatar asked Dec 09 '11 21:12

William Sham


1 Answers

awakeFromNib is called by NSBundle when it finishes loading your nib.

You've actually got two different code paths your code can take when initializing a view, depending on whether it's loaded from a nib or created at runtime.

  • If it's loaded from a nib, part of the loading will initialize it by calling initWithCoder:, followed by a later call of awakeFromNib after all the outlets have been connected.

  • If you create the view programmatically, you initialize it with initWithFrame: instead (and awakeFromNib is never called because it wasn't loaded from a nib).

like image 64
Tony Avatar answered Oct 18 '22 18:10

Tony