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错问题相关推荐

  1. 课程介绍 复习 创建对象的三种方式 自定义构造函数创建对象 工厂模式创建对象

    课程介绍 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8 ...

  2. js 自定义构造函数

    js 自定义构造函数 自定义构造函数 根据固定的模板,创建一个对象,创建的对象有构造函数规定的属性和方法. 潜规则:构造函数的首字母需要大写 <script>//自定义构造函数//就是根据 ...

  3. swift5优秀打印函数自定义

    swift5优秀打印函数自定义 func LJLog<T>(message: T,file: String = #file,funcName: String=#function,lineN ...

  4. 自定义模型tensorboard画图命令报错 assert error assert isinstance(orig, torch.nn.Module)

    ╭──────────────────────────── Traceback (most recent call last) ────────────────────────────╮ │ < ...

  5. js的自定义构造函数和工厂模式的区别

    使用自定义构造函数创建对象 function Person(name,age){this.name=name;this.age=age;this.play=function(){console.log ...

  6. 实战:基于自定义注解实现自定义框架Spring

    实战:基于自定义注解实现自定义框架Spring 一.自定义注解介绍 1.1 通过反射API,可以判断一个类.接口.字段或者方法上是否有注解 Class类(java.lang包下)中提供了一些方法用于反 ...

  7. Vue scss 引入变量报错

    官网css引入配置 参考文章 我在项目里自定义了vue.config.js的rules关于scss的loader所以我是直接子啊loader配置options就可以 { test: /\.scss$/ ...

  8. android如何自定义dialog,Android—自定义Dialog

    在 Android 日常的开发中,Dialog 使用是比较广泛的.无论是提示一个提示语,还是确认信息,还是有一定交互的(弹出验证码,输入账号密码登录等等)对话框. 而我们去看一下原生的对话框,虽然随着 ...

  9. java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)

    Callback回调事件介绍 Java或Android中创建异步回调最普遍的做法就是使用listener监听器或者observer观察者模式来解决,listener回调事件通常用于实现一个代码去监听另 ...

最新文章

  1. 随机森林图像分类实战:随机森林分类聚类(Kmeans)降维后的数据、随机森林分类聚类(Kmeans)降维后的合成(append)数据
  2. C/C++ 框架,类库,资源集合
  3. 粤港澳大湾区菜篮子-哲商对话·林裕豪:从玉农业谋定标准
  4. wxWidgets:子类化Subclassing WxControl
  5. mysql insert锁机制
  6. rest laravel_如何通过测试驱动开发来构建Laravel REST API
  7. MATLAB入门学习(三)
  8. MongoDB副本集、分片集的伪分布式部署(保姆级教程)
  9. [转载] python 元组tuple - python基础入门(14)
  10. html插入mv,视屏如何插入html
  11. IDEA+Maven+多个Module模块(创建多模块SpringBoot整合项目)
  12. 计算机有关的科技论文题目,计算机前沿科技论文选题范文 计算机前沿科技专业论文题目如何拟...
  13. iTextSharp 添加表格
  14. jmeter 接口请求出现安全验证解决方案
  15. C++ opencv之像素操作之逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)
  16. android 仿写开发者头条,android高仿今日头条富文本编辑(发布文章)
  17. 大物笔记(顺便记记)
  18. python多线程请求接口_python多线程实现http请求
  19. Java编程之实现数字化的连连看
  20. 安装dotnetframework3.5无需联网的方法

热门文章

  1. linux更改甜器名称,Linux添加swap分区
  2. java 类说明,java基础类型说明
  3. python discover()没有加载测试用例_对python_discover方法遍历所有执行的用例详解
  4. mysql navicat 函数_Navicat for MySQL 函数高级属性讲解
  5. python ioc di_Sping(一)——IOC/DI
  6. pregquote php,PHP: preg_quote - Manual
  7. java 文件通配符_Java中泛型通配符的使用方法示例
  8. python设置图片透明度_学习python第40天
  9. html支持移动端吗,bootstrap支持手机端吗?
  10. p沟道mos管导通条件_场效应管(MOS管)的判断与应用知识