Q10:fatal error:use of unimplemented initializer init(nibName nibNameOrNil: String?, bundle nibBundl
来源:互联网 发布:知乎 张国荣 编辑:程序博客网 时间:2024/06/12 01:51
init method 关键知识点
问题描述:fatal error: use of unimplemented initialer for class
代码二:
import UIKitclass 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?)
方法。执行完在跳回来。很有意思的东西 大家可以研究一下。
- Q10:fatal error:use of unimplemented initializer init(nibName nibNameOrNil: String?, bundle nibBundl
- Q9:fatal error:use of unimplemented initializer
- swift项目在iOS8 通过init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle
- Swift中重写类的init报错use of unimplemented initializer 'init(coder:)'解决
- fatal error C1189: #error : ERROR: Use of C runtime library internal header
- Fatal Error: Invalid Layout of java.lang.String at value
- 【GCC调试程序C语言问题】error: initializer-string for array of chars is too long [-fpermissive]
- PHP Fatal error: Cannot use object of type stdClass as array in错误
- PHP Fatal error: Cannot use object of type 报错解决之
- php错误 Fatal error: Cannot use object of type stdClass as array in……
- Repo Init Fatal: error unknown url type
- Q10
- [乐意黎原创]php 抛Fatal error: Cannot use object of type stdClass as array in XXX的解决方法
- 关于Method override for the designated initializer of the superclass '-init' not found警告
- 不要在init和dealloc函数中使用Accessor 方法[Don’t Use Accessor Methods in Initializer Methods and dealloc]
- error :expected initializer before
- Initializer of C++ objects
- 完美解决repo init 错误 fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
- npm安装一些包失败了
- 判断某数据库某表是否存在object_id
- android开机默认中文的方法
- wince MFC 中常用的数据转换
- OpenSSL源码分析之MD5算法
- Q10:fatal error:use of unimplemented initializer init(nibName nibNameOrNil: String?, bundle nibBundl
- android SlidingMenu属性说明
- PHPOK 调用bootstrap 自适应轮播图的方法。
- 控制器view加载/ViewControl中View的创建
- 安卓系统for x86系统安装测试(一)
- [FormerlySerializedAs] 防止更新变量后数据丢失
- UITableView cell自动适应内容高度
- 程序员必看的书
- C++单例实现