使用xcode 6.3.1并为IOS 8.3设备构建项目。获取指定的初始化程序应仅在“超级”上调用指定的初始化程序。错误,请有人请调整代码。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
if (!nibNameOrNil) {
return [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
}
NSLog (@"%@ is now deprecated, we are moving away from nibs.", NSStringFromSelector(_cmd));
return [self initWithStyle:UITableViewStyleGrouped];
}
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self initWithStyle:UITableViewStyleGrouped];
}
return self;
}
答案 0 :(得分:1)
这个错误在这里说明了一切。不要在' self'上调用其中一个init方法。来自其中一个init方法。你在调用:
>>> words = s.lower().split()
>>> words
['yes!', 'these', 'are', 'words.']
>>> words.sort()
>>> words
['are', 'these', 'words.', 'yes!']
>>>
你应该调用:
[self initWithStyle:UITableViewStyleGrouped];
或者如果你在“自我”中有一些额外的逻辑。对于这个init,你应该重新设计你的公共初始化逻辑调用栈。
底线:不要从init调用[self init ...],只调用[super init ...]或添加其他自定义(未覆盖)的init方法。
此外:你正在调用init两次。