我正在尝试将我的代码转换为 iOS 8 项目,我需要一些关于如何修复此警告的解释:"Convenience initializer missing a 'self' call to another initializer"
在此代码上:
-(instancetype) initWithCoder:(NSCoder *)aDecoder // warning: Convenience initializer missing a 'self ' call to another initializer
{
if (self = [super initWithCoder:aDecoder]) // warning: convenience initializer should not invoke an initializer on 'super'
{
// some init stuff here
}
return self;
}
Xcode 6 附带的新 Clang 通过 NS_DESIGNATED_INITIALIZER 宏启用编译器强制指定的初始值设定项。当它在类声明中标记任何一个 init 系列方法时,所有其他初始化器都被视为“辅助”(使用 Apple 的术语)初始化器。也就是说,它们应该调用另一个指定的或辅助初始化程序,直到它们到达指定的初始化程序。
UIView 没有将任何内容标记为指定的初始值设定项,因此您在某个地方将类的另一个 init 方法声明为指定的初始值设定项。因此,NSCoder 的初始化程序被标记为次要并生成警告。我已经提交了关于它的雷达(rdar://17559176),但在此之前它可以通过指定在每个文件的基础上关闭-Wno-objc-designated-initializers
,或通过提供适当的诊断推弹出-Wobjc-designated-initializers
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)