Q10:fatal error:use of unimplemented initializer init(nibName nibNameOrNil: String?, bundle nibBundl

init method 关键知识点

问题描述:

fatal error: use of unimplemented initialer for class

代码二:

import UIKit
class ViewController:UIViewController{
    var data:String?

    init(para:String){
        //那么参数 放这里初始化呢 self.data = para
        super.init()
        //还是放这里初始化呢 self.data = para
    }
    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func viewDidLoad(){
        super.viewDidLoad()
    }
}

尽管你有一个init(para:String)构造器,还有一个requried init(),但仍然不可避免运行时候报错fatal error: use of unimplemented initialer init(nibName nibNameorNil:String?,bundle,nibBundleOrNil:NSBundle?) 类似这种

解决方法:

解决方法:

添加函数:

init(nibName nibNameorNil:String?,bundle,nibBundleOrNil:NSBundle?){
    super.init(nibName:nibNameorNil,bundle:nibBundleOrNil)
}

不只是解决方法!

这里有个问题,也是前面代码注释中提到的,初始化参数放哪里?你可以试试用let vc = ViewController(para:"Hello") 初始化一个ViewController,你会发现self.data = para放哪里结果是不一样的,放在super.init()前面初始化会最后变成nil,后面则不影响。

init()有个条例,先将本实例的属性值都初始化,再添加上super.init(),假如你要修改父类的参数,再在之后赋值覆盖掉!但是貌似和我们完全不同。其实你忽略了一个问题:

注意 我们调用了super.init() 而非super.init(nibName:nil,bundle:nil)

是的,问题的关键就是这里。另外为什么放在super.init()之后是没有问题的呢?因为let vc = ViewController(para:"Hello")先跳入init(para:String)方法,执行到super.init()又会跳到
init(nibName nibNameorNil:String?,bundle,nibBundleOrNil:NSBundle?)方法。执行完在跳回来。很有意思的东西 大家可以研究一下。

时间: 2024-11-05 19:03:09

Q10:fatal error:use of unimplemented initializer init(nibName nibNameOrNil: String?, bundle nibBundl的相关文章

Q9:fatal error:use of unimplemented initializer

init method 关键知识点 问题描述: fatal error: use of unimplemented initialer init(coder:) for class 代码一: import UIKit class ViewController:UIViewController{ init(nibName nibNameorNil:String?,bundle,nibBundleOrNil:NSBundle?){ super.init(nibName:nibNameorNil,bu

Q2:关于数组的解包错误 fatal error: Can't unwrap Optional

今天遇到一个小问题,想自己做个小项目,在一个controller中声明一个数组用于存储从数据库读来的内容,声明为 var bugCgs:[BugCategory],其实对应形式就是var className:[classType],很不巧,这样写会报错,如下图: 我自然知道在swift中变量都必须要有初始值(当然也不是一定的 例如在一个函数中就不需要).xcode提示要不要加一个required initializer 'init(coder:)'? 由于对可选类型还是有一定理解,我不假思索改成

php提示Fatal error: Call to undefined function imagecreate()

在php中imagecreate函数是一个图形处理函数,主要用于新建一个基于调色板的图像了,然后在这个基础上我们可以创建一些图形数字字符之类的,但这个函数需要GD库支持,如果没有开启GD库使用时会 undefined 在php中imagecreate函数是一个图形处理函数,主要用于新建一个基于调色板的图像了,然后在这个基础上我们可以创建一些图形数字字符之类的,但这个函数需要GD库支持,如果没有开启GD库使用时会提示Call to undefined function imagecreate()错

Mysql报错Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

安装mysql后,启动时候没有启动成功,查看了下日志报错如下:--------------------------------------------- 1   可以:初始化mysql:mysql_install_db 2   目录权限问题chown -R mysql:mysql  /var/lib/mysql [[email protected] local]# less /var/log/mysqld.log1.查看报错信息如下:[ERROR] Fatal error: Can't open

Fatal error compiling: java.lang.NoSuc hFieldError??

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project easemob-core: Fatal error compiling: java.lang.NoSuchFieldError: pid -> [Help 1][ERROR][ERROR] To see the full stack trace of the e

PHP Fatal error: Call to undefined function imagettftext()

PHP Fatal error: Call to undefined function imagettftext() 一.问题描述 安装了环境,发现验证码显示不了,查看日志:error: Call to undefined function imagettftext(),然后你去搜索百度,原因千千万,帖子里的解决方法也千千万,有的是缺gd库支持(没安装),也有可能是gd库要依赖的库等没有安装,或者说是库版本不匹配等,笔者我也捣弄了一大堆解决方式,最后的建议还是重新编译安装php,各种曲折大家可以

FATAL ERROR: Could not find ./bin/my_print_default

网上很多方法都是:/usr/local/mysql/scripts/mysql_install_db --user=mysql 但是很有可能报错,找不到bin目录中的my_print_defaults 错误信息: FATALERROR:Couldnotfind./bin/my_print_defaults If you are using a binary release, you must run this script from within the directory the archiv

PHP配置问题:AppServ安装discuz出错 Fatal error:

 Fatal error: Call to undefined function set_magic_quotes_runtime() in  D:\AppServ\www\wp-settings.php on line 27 打开C:\WINDOWS\php.ini 大约在 428 行位置,将magic_quotes_runtime 改为 Off.也就是 magic_quotes_runtime = Off 如果前面有注释的分号,也将它删掉.然后重启 Apache 服务. 打开你的 wp 目录

python pip fatal error in launcher unable to create process using

用pip安装一个包,不知道为啥,就报了这个错误:python pip fatal error in launcher unable to create process using “” 百度了一下,用下面的命令可以解决,搞定 python2 -m pip install XXX  另外,Python3 的pip我用python3 -m pip install --upgrade pip 搞定