ios - "Convenience initializer missing a ' self ' call to another initializer"

标签 ios ios8 xcode6

我正在尝试将我的代码转换为 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-family 方法时,所有其他初始化程序都被视为“次要”(使用 Apple 的术语)初始化程序。也就是说,它们应该调用另一个指定的或次要的初始化程序,直到他们到达指定的初始化程序。

UIView 没有将任何内容标记为指定的初始值设定项,因此您在某个地方声明了该类的另一个 init 方法作为指定的初始值设定项。因此,NSCoder 的初始化程序被标记为次要的并生成警告。我已经提交了一个关于它的雷达 (rdar://17559176),但在那之前可以通过指定 -Wno-objc-designated-initializers 或通过使用 -Wobjc-designated-initializers 提供适当的诊断 push-pop。

关于ios - "Convenience initializer missing a ' self ' call to another initializer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24458608/

相关文章:

objective-c - 单击按钮时单元格如何滑动

ios - 如何下载 xcode 6 测试版?以及如何将 xcode 5 和 xcode 6 保存在同一台机器上?

ios - 使用自动布局时,UIButton 中的图像不会缩放。

ios - 在一定数量的互动后展示广告

iphone - 如何解决这种循环依赖?

ios - CGAffineTransform 缩放 subview 问题

iphone - "Current location"文本应根据 iPhone 中的语言进行更改

ios - 通过 NSDate 对元素进行排序并添加到 UITableView

ios - 如何在今天的扩展中访问 CoreData 模型(iOS)

ios - 初始化时 Swift 额外参数