swift5自定义构造函数和自定义变量报required init?(coder: NSCoder) { fatalError(“init(coder:) has not bee错问题
swift5自定义构造函数和自定义变量报required init
全局类下 UIViewController,通过构造方法传递属性值。还有一种方法,通过属性监听去给给viewController 传值
什么是构造函数,在java里面,跟类名一样的函数,叫做构造函数,
有无参构造和有参构造,那么在swift5中,如何自定义构造函数。
构造函数是初始化成员变量的。
init(indexPath: NSIndexPath, picURLs: [NSURL]){
super.init(nibName: nil, bundle: nil)
}
init是关键字,即一个类的构造函数。我们传入2个值。
并在类里面书写成员变量
var indexPath: NSIndexPath
var picURLs: [NSURL]
问题来了,为啥不加? 号,或者 = 号,初始化成员变量呢。
例如 var num: Int = 0 或者 搞成可选 var num: Int?
我们在下面直接使用init 构造函数去初始化成员变量。即
init(indexPath: NSIndexPath, picURLs: [NSURL]){
self.indexPath = indexPath
self.picURLs = picURLs
super.init(nibName: nil, bundle: nil)
}
必须调用父类的 super.init(nibName: nil, bundle: nil) ,并且放在最后一行,先给成员变量赋值,在调用super方法。
并且重写:
required init?(coder: NSCoder) {
fatalError(“init(coder:) has not been implemented”)
}
这个方法。
我们去创建一个对象的时候,直接调用
let photoBrowVc = PhotoBrowserController(indexPath: indexPath, picURLs: picURLs)
系统自带的 init 不能直接创建。因为我们没有重写这个方法。
不能let vc = PhotoBrowserController() 会报错。想这个方法不报错,
重写init,
swift5自定义构造函数和自定义变量报required init?(coder: NSCoder) { fatalError(“init(coder:) has not bee错问题相关推荐
- 课程介绍 复习 创建对象的三种方式 自定义构造函数创建对象 工厂模式创建对象
课程介绍 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8 ...
- js 自定义构造函数
js 自定义构造函数 自定义构造函数 根据固定的模板,创建一个对象,创建的对象有构造函数规定的属性和方法. 潜规则:构造函数的首字母需要大写 <script>//自定义构造函数//就是根据 ...
- swift5优秀打印函数自定义
swift5优秀打印函数自定义 func LJLog<T>(message: T,file: String = #file,funcName: String=#function,lineN ...
- 自定义模型tensorboard画图命令报错 assert error assert isinstance(orig, torch.nn.Module)
╭──────────────────────────── Traceback (most recent call last) ────────────────────────────╮ │ < ...
- js的自定义构造函数和工厂模式的区别
使用自定义构造函数创建对象 function Person(name,age){this.name=name;this.age=age;this.play=function(){console.log ...
- 实战:基于自定义注解实现自定义框架Spring
实战:基于自定义注解实现自定义框架Spring 一.自定义注解介绍 1.1 通过反射API,可以判断一个类.接口.字段或者方法上是否有注解 Class类(java.lang包下)中提供了一些方法用于反 ...
- Vue scss 引入变量报错
官网css引入配置 参考文章 我在项目里自定义了vue.config.js的rules关于scss的loader所以我是直接子啊loader配置options就可以 { test: /\.scss$/ ...
- android如何自定义dialog,Android—自定义Dialog
在 Android 日常的开发中,Dialog 使用是比较广泛的.无论是提示一个提示语,还是确认信息,还是有一定交互的(弹出验证码,输入账号密码登录等等)对话框. 而我们去看一下原生的对话框,虽然随着 ...
- java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)
Callback回调事件介绍 Java或Android中创建异步回调最普遍的做法就是使用listener监听器或者observer观察者模式来解决,listener回调事件通常用于实现一个代码去监听另 ...
最新文章
- 随机森林图像分类实战:随机森林分类聚类(Kmeans)降维后的数据、随机森林分类聚类(Kmeans)降维后的合成(append)数据
- C/C++ 框架,类库,资源集合
- 粤港澳大湾区菜篮子-哲商对话·林裕豪:从玉农业谋定标准
- wxWidgets:子类化Subclassing WxControl
- mysql insert锁机制
- rest laravel_如何通过测试驱动开发来构建Laravel REST API
- MATLAB入门学习(三)
- MongoDB副本集、分片集的伪分布式部署(保姆级教程)
- [转载] python 元组tuple - python基础入门(14)
- html插入mv,视屏如何插入html
- IDEA+Maven+多个Module模块(创建多模块SpringBoot整合项目)
- 计算机有关的科技论文题目,计算机前沿科技论文选题范文 计算机前沿科技专业论文题目如何拟...
- iTextSharp 添加表格
- jmeter 接口请求出现安全验证解决方案
- C++ opencv之像素操作之逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)
- android 仿写开发者头条,android高仿今日头条富文本编辑(发布文章)
- 大物笔记(顺便记记)
- python多线程请求接口_python多线程实现http请求
- Java编程之实现数字化的连连看
- 安装dotnetframework3.5无需联网的方法
热门文章
- linux更改甜器名称,Linux添加swap分区
- java 类说明,java基础类型说明
- python discover()没有加载测试用例_对python_discover方法遍历所有执行的用例详解
- mysql navicat 函数_Navicat for MySQL 函数高级属性讲解
- python ioc di_Sping(一)——IOC/DI
- pregquote php,PHP: preg_quote - Manual
- java 文件通配符_Java中泛型通配符的使用方法示例
- python设置图片透明度_学习python第40天
- html支持移动端吗,bootstrap支持手机端吗?
- p沟道mos管导通条件_场效应管(MOS管)的判断与应用知识