我的代码在这里:
url(r'^user/password/reset/(?P<uidb64>[0-9A-Za-z_\-]+) ......
然后xcode有警告
指定的初始值设定项缺少对指定初始值设定项的超级调用 超级班级
当我建造它时。
答案 0 :(得分:1)
您需要在此方法中添加此行。
self = [super initWithFrame:frame];
if(self) {
}
return self;
来自Apple Doc。
指定初始值设定项
获取完整初始化参数的类的初始化器通常是指定的初始化器。子类的指定初始化程序必须通过向super发送消息来调用其超类的指定初始值设定项。方便(或辅助)初始化程序 - 可以包括init-不要调用super。相反,他们使用下一个参数调用(通过消息自我)系列中的初始化程序,为未传递给它的参数提供默认值。本系列的最终初始化程序是指定的初始化程序。
答案 1 :(得分:1)
你应该让你的课有这样的事情:
运行初始化:&gt;
-(instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if(!self){
return nil;
}
NSBundle *mainBundle = [NSBundle mainBundle];
NSArray *views = [mainBundle loadNibNamed:@"LSCouponADView"
owner:nil
options:nil];
//above nib name should not be hard coded, it should be like this:
//NSArray *views = [mainBundle loadNibNamed:NSStringFromClass([self class])
owner:nil
options:nil];
[self addSubview:views[0]];
return self;
}
您还应该覆盖xib初始化:
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(!self){
return nil;
}
NSBundle *mainBundle = [NSBundle mainBundle];
NSArray *views = [mainBundle loadNibNamed:@"LSCouponADView"
owner:nil
options:nil];
[self addSubview:views[0]];
return self;
}
总之,你可以制作一个从nib加载的常用方法。