• Explain awakeFromNib, initwithFrame usage


    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?

    Thank you.

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

    -(id)initWithFrame:(CGRect)frame { self=[super initWithFrame:frame];  
    if(self){
        [self setup];
      }
      return self; }

    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 callinginitWithCoder:, 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 (andawakeFromNib is never called because it wasn't loaded from a nib).

    self is a pointer to the current object (it's implicitly defined for every non-static method). super lets you call the object's superclass's implementation of the current method. The self = [super init...] is a convention for how you invoke the superclass's initializer (since it can possibly return a different object). These are fundamental notions in Objective-C and object-oriented programming though, a fair bit beyond the scope of the original question.

     
  • 相关阅读:
    iOS堆栈-内存-代码在据算机中的运行
    iOS self和super的区别
    php代码优化
    缓存雪崩现象解决方案
    缓存失效
    分布式memcache
    Linux下编译安装Memcache
    windows 下安装 php-memcached 扩展
    Linux下安装 php-memcache 扩展
    缓存之文件缓存
  • 原文地址:https://www.cnblogs.com/mumue/p/3055757.html
Copyright © 2020-2023  润新知