init()和deinit()
一、初始化方法(init())
1、定义:类初始化对象时所调用的方法
2、分类: (1)默认初始化方法
(2)便利初始化方法
(3)使用闭包
3、一些注意点:
(1)方法固定名为init,没有返回值,方法名init前面也不需要加func
(2)在创建对象之后,如果要使用对象的属性之前,必须对属性初始化
(3)声明一个变量,必须赋初始值,除非这个变量是强制解包可选,或者在初始化方法赋初始值,也可达到同样的效果
(4)初始化方法可以多个存在,并且每一个的方法名都是init,但是参数要不同。对于方法参数不同,不仅仅通过参数类型来判断,还涉及参数的名称,这个在其他语言中称为:方法的重载(参数名或者参数别名不同)
4、一些例子的运用代码块
4.1、默认初始化方法,声明成员属性的时候,不赋初始值,但必须要有初始话方法对成员变量进行初始化
4.2、当声明为强制解包可选(!)可以不用初始化方法,在类进行实例化对象的时候再对变量进行赋初始值,但是有也没关系。
4.3、多个初始化方法并行(方法的重载)
4.4、初始化方法的分类
(1) 使用提供的默认初始化方法
(2)便利初始化方法及其重载
(3)使用闭包(如果某个存储属性的默认值需要特别定制或者准备,那么久可以使用闭包来初始化这个属性的默认值)
二、反初始化方法(deinit())
1、定义:可以这么理解,初始化方法是为了类创建对象的时候,使用对象属性对其属性赋初始值,那么当你这个对象销毁的使用,也要对气属性进行释放。构造那么一个场景:当我们建立一个数据库访问,在初始化的时候打开链接,如果程序退出,链接不释放,资源就浪费了,反初始化方法可以释放这个链接,减少资源浪费。
2、注意点
当要关闭链接的时候,要把对象设置为nil,不然反初始化方法不会被调用
init()和deinit()的更多相关文章
- Swift - 类初始化和反初始化方法(init与deinit)
1,init():类的初始化方法(构造方法) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...
- imx6 lvds 代码分析
查看imx6 kernel中lvds设备和驱动的初始化过程. 相关文档: arm/arm/mach-mx6/board-mx6q_sabresd.c kernel/drivers/video/mxc/ ...
- wpa_supplicant软件架构分析
wpa_supplicant软件架构分析 1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bi ...
- wpa_supplicant 使用
(1)通过adb命令行,可以直接打开supplicant,从而运行wpa_cli,可以解决客户没有显示屏而无法操作WIFI的问题,还可以避免UI的问题带到driver.进一步来说,可以用在很多没有键盘 ...
- 如何使用Instruments诊断App(Swift版):起步-b
无论你写过许多iOS应用,还是刚刚开始你的第一个应用,毫无疑问,你都会想出一些新点子,或者想去弄明白你该怎么做,来让你的app变得更好. 除去添加新特性来优化你的应用,有一件事是所有好的开发者都回去做 ...
- git submodule 使用过程中遇到的问题
git submodule 使用过程中遇到的问题 资源文件 原.gitmodules文件的内容如下: [submodule "Submodules/FFmpegWrapper"] ...
- 算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)
温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结.数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下.当然数据结构相关博客中我们以Swift语言来实现.因为Swift ...
- Beginning SDL 2.0(3) SDL介绍及BMP渲染
SDL是一个跨平台的多媒体库.为了实现跨平台,SDL提供了一个简单的界面库抽象,比如提供了SDL_Window用于表示窗口句柄,SDL_Surface.SDL_Texture.SDL_Renderer ...
- wpa_supplicant下行接口浅析
wpa_supplicant通过socket通信机制实现下行接口,与内核进行通信,获取信息或下发命令. 以下摘自http://blog.csdn.net/fxfzz/article/details/6 ...
随机推荐
- 解决PhoneGap不支持viewport的几种方法
前几天用phonegap编译GameBuilder+CanTK时,发现HTML里的viewport无效.CanTK根据devicePixelRatio检测设备的DPI,然后用viewport设置正确的 ...
- computer English
算法常用术语中英对照Data Structures 基本数据结构Dictionaries 字典PriorityQueues 堆Graph Data Structures 图Set Data Struc ...
- Android系统启动过程-uBoot+Kernel+Android
摘要:本文是参考大量网上资源在结合自己查看源代码总结出来的,让自己同时也让大家加深对Android系统启动过程有一个更加深入的了解!再次强调,本文的大多数功劳应归功于那些原创者们,同时一些必要的参考链 ...
- 背景大图隔几秒切换(非轮播,淡入淡出)--变形金刚joy007 项目总结
工作日想了好久,周日回家才想出来的... 图片切换(非轮播,淡入淡出) 1.切换2.停止 <html> <head> <meta content="text/h ...
- Shell基础:Shell和Mysql交互
通过命令行和Mysql交互 [root]#mysql -uroot -p123 -e "show databases" -e: execute: 执行数据库命令 通过脚本和数据 ...
- java synchronized类锁,对象锁详解(转载)
觉得还不错 留个记录,转载自http://zhh9106.iteye.com/blog/2151791 在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看 ...
- hdu----(5055)Bob and math problem(贪心)
Bob and math problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- 《Play for Java》学习笔记(一)项目框架
从今天开始认真复习<Play for JAVA>,该书以一个案例为主线,以前为应付项目马马虎虎看了一遍,好多地方都不明白!现在跟着这本书再走一遍,认真模拟,当做一个项目啦!! 一.Play ...
- 7款适用老旧设备并对初学者非常友好的轻量级Linux发行版
我们由从 7 到 1 的顺序向大家介绍. 7. Linux Lite 正如其名,Linux Lite 是 Linux 发行版的一个轻量级版本,用户并不需要强大的硬件就可以将它跑起来,而且其使用非常简单 ...
- div在固定高的文字垂直居中
<div style='display:table; height:100px;'> <div style='display:table-cell; vertical-align: ...