“便捷初始化程序缺少对另一个初始化程序的‘自我’调用”

2024-04-30

我正在尝试将我的代码转换为 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(使用前将#替换为@)

“便捷初始化程序缺少对另一个初始化程序的‘自我’调用” 的相关文章

随机推荐