我初始化tableView的代码是:
convenience override init(style: UITableViewStyle) {
self.init(style: .Grouped)
// Custom initialization
self.title = NSLocalizedString("mdm.agent.common.desktopCentral", comment : "")
}
错误是行上的EXC_BAD_ACCESS
self.init(style: .Grouped)
为什么这种类型的初始化会引发错误,但是与目标c一起使用?目标c代码是:
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:UITableViewStyleGrouped];
if (self) {
// Custom initialization
self.title = NSLocalizedString(@"mdm.agent.common.desktopCentral", nil);
}
return self;
}
答案 0 :(得分:0)
您需要在构造函数中调用superclasses init方法,或者在您自己的类中调用指定的初始化程序。
在您发布的示例Objective-C代码中有行
self = [super initWithStyle:UITableViewStyleGrouped];
这一行正在调用initWithStyle:
的超类实现。
在您的代码中,您从同一方法中调用self.init(style: .Grouped)
,这会导致无限递归。您可以通过两种不同的方式修复此问题,或者调用不同的指定初始值设定项,例如self.init()
,或者删除convenience
关键字以使其成为指定的初始值设定项,这将允许您调用超类实现。
你可能想要做第二个选项,如下所示:
override init(style tableStyle: UITableViewStyle) {
super.init(style: style) //use the style value passed into the method
// Custom initialization
self.title = NSLocalizedString("mdm.agent.common.desktopCentral", comment : "")
}