initWithFrame,initWithCoder的区别

  • initWithFrame,在code中,使用代码直接创建object时调用
  • initWithCoder,通过interface builder(storyboard,nib等)来创建object时调用

initWithCoder,awakeFromNib的区别

  • 调用initWithCoder时,还没有加载IBOutlet,IBAction完毕
  • 调用awakeFromNib时,已经加载完毕

使用方法

  • 只使用interface builder(storyboard),如果不考虑太多,可以只使用awakeFromNib
  • 如果View有可能同时使用initWithFrame,initWithCorder,需要都编写initWithCorder和awakeFromNib
- (void)awakeFromNib
{
    [super awakeFromNib];
}
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self setup];
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
    if ((self = [super initWithCoder:aDecoder])) {
        [self setup];
    }
    return self;
}


- (void)setup
{
}

results matching ""

    No results matching ""