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
{
}