当前位置: 首页 > 面试题库 >

super.init调用未初始化属性“ self。*”

汪臻
2023-03-14
问题内容

我刚刚将xcode更新为6.3.1。问题是自Swift 1.2起我收到了这个奇怪的错误消息。我收到这种错误消息

/Users/MNurdin/Documents/iOS/xxxxx/Library/SideBar.swift:32:15: Property 'self.originView' not initialized at super.init call

/Users/MNurdin/Documents/iOS/xxxxx/Library/SideBar.swift:38:20: Immutable value 'self.originView' may only be initialized once

在此代码上

let originView:UIView?

override init() {
        super.init() //error here

    }

    init(sourceView:UIView, menuItems:Array<String>){
        super.init() //error here
        originView = sourceView //error here

问题答案:

在调用super.init任何init方法之前,必须初始化所有属性

因此,在调用super.init()之前先进行更改

originView = sourceView //error here

例外:

  1. 可选属性
  2. 具有默认值的属性
  3. 懒惰的财产


 类似资料:
  • 问题内容: 我有两节课,和 通过上面的实现,我得到了错误: 为什么在致电之前必须先设置? 问题答案: 引用Swift编程语言,它回答了您的问题: “ Swift的编译器执行四项有用的安全检查,以确保两阶段初始化完成且没有错误:” 安全检查1“指定的初始值设定项必须确保由其类引入的所有属性在将其委托给超类初始值设定项之前都已初始化。” 摘录自:苹果公司“ The Swift Programming

  • 问题内容: 我快速覆盖了其中的两个必需变量,这些变量通过使用引用进行初始化,因为这些变量用于实现协议,并且需要引用以使用其属性 现在的问题是,它给了我预期的错误 Swift的编译器执行四项有用的安全检查,以确保两阶段初始化完成且没有错误 安全检查1指定的初始化程序在将其委托给超类初始化程序之前,必须确保初始化其类引入的所有属性。 摘录自:苹果公司“ The Swift Programming La

  • 问题内容: 我很好奇,无论如何在init方法内部调用一个用于设置类实例属性的方法。本质上,我只是有一个类来对UIView进行子类化,并在init中添加了一些子视图,而其中一些子视图是该类的实例变量。 现在出现了问题,我无法在初始化类的内部属性之前调用super init(在super.init调用时未初始化属性’self.collectionView’),但是在调用之前,我也无法调用自定义方法来初

  • Json服务器数据显示,在使用retrofit2和rxjava2的android中,当参数传递给inteface时,会出现错误。 接口

  • 我不知道这是怎么回事 主要活动 我遇到了这个问题 2022-03-18 09:18:27.393 13874-13874/com。实例githubuser2 E/AndroidRuntime:致命异常:主进程:com。实例githubuser2,PID:13874 java。lang.RuntimeException:无法启动活动组件信息{com.example.githubuser2/com.e

  • 我有一个类,我注入到ViewModel ViewModel工厂,当在活动中的onCreate方法中初始化视图模型时,它说传递的值没有初始化。 下面是我的代码 我对Kotlin很陌生,所以尝试过调试,但在这个问题上卡住了。 这是Mainactive代码: 我的ViewModelFactory: 我的班级回购: 这是我收到的错误: