Swift初级入门【步步为营】
菜鸟向前看。。。。。。
来八一八swift的那些事了
啦啦啦啦啦啦啦,快来打我呀,我就是这么强大,啦啦啦啦啦啦啦啦啦啦啦
目录
1、swift中let和var的区别
2、swift中的lazy
3、Swift中的注释
1、swift中let和var的区别
let和var的区别在于对象的内存地址可不可以改变
let代表不可变对象,即对象首地址不能发生改变,也就是说内存地址不能改变;
var代表可变对象,即内存地址可以发生改变,可以修饰指针重新指向的变量;
举例:
let strB:String = "我是B"
strB = "我是新来的B" 这个时候Xcode会提示报错
Expected 'var' keyword in property declaration
Insert 'var '
Invalid redeclaration of 'strB'
因为let修饰的变量不能改变指针指向,故这时候Xcode提示你用var
var strB:String = "我是B"
strB = "我是新来的B" 完美展示不会报错
再来看看下面这个
let arrayM: NSMutableArray = NSMutableArray()
arrayM.add("我是A") Xcode为什么没有报错???
let可以修饰可变对象,数组arrayM的内存地址并没有发生改变,也就是数组arrayM的指针没有重新指向
2、swift中的lazy
swift中我们在变量属性前加lazy关键字来指定延迟加载,最主要的作用就是提升性能
所谓延迟加载就是在第一次访问某个属性时,要判断这个属性是否初始化,如果已经初始化则直接返回,如果没有初始化则进行初始化。这样可以把这个属性延迟初始化,把它和包含它的对象初始化分隔开,从而达到提升性能的目的。
延迟加载是初始化时很常用的性能优化方式,尤其是在一些对象的属性比较复杂时候,默认全部初始化会耗费不少时间,从而影响性能;还有一些在特定场景才能使用到的对象,更是浪费资源。所以有些时候我们并不会立刻用到一个对象或者一个对象的所有属性,使用延迟加载可以提升性能。示例代码如下:
private lazy var _titleLabel: UILabel = {
let titleL = UILabel.init()
titleL.text = "Hello World"
return titleL
}()
关于Lazy的拓展:Lazy可以配合map、filter这类接受闭包运行的方法一起,使整个行为变成延迟执行,举个例子吧
正常情况下:
let numbers = 1...5
let doubleNumbers = numbers.map { (i:Int) -> Int in
print("numbers:\(i)")
return i*2
}
for i in doubleNumbers{
print("doubleNumbers:\(i)")
}
输出结果:
numbers:1
numbers:2
numbers:3
numbers:4
numbers:5
doubleNumbers:2
doubleNumbers:4
doubleNumbers:6
doubleNumbers:8
doubleNumbers:10
添加Lazy关键字:
let numbers = 1...5
let doubleNumbers = numbers.lazy.map { (i:Int) -> Int in
print("numbers:\(i)")
return i*2
}
for i in doubleNumbers{
print("doubleNumbers:\(i)")
}
输出结果:
numbers:1
doubleNumbers:2
numbers:2
doubleNumbers:4
numbers:3
doubleNumbers:6
numbers:4
doubleNumbers:8
numbers:5
doubleNumbers:10
对于一些不需要完全运行或者提前退出的情况,使用lazy进行性能优化更加有效
3、Swift中的注释
分组注释
OC中
#pragma mark====== 你要写的注释Swift中
//MARK: -你要写的注释
Swift初级入门【步步为营】相关推荐
- swift菜鸟入门视频教程-03-字符串和字符
本人自己录制的swift菜鸟入门,欢迎大家拍砖.有什么问题能够在这里留言. 主要内容: 字符串字面量 初始化空字符串 字符串可变性 字符串是值类型 使用字符 计算字符数量 连接字符串和字符 字符串插值 ...
- 《Swift编程入门经典》
2019独角兽企业重金招聘Python工程师标准>>> <Swift编程入门经典> 有趣.快速地构建iOS和OS X应用,Swift是苹果公司用于iOS和OS X开发的新 ...
- swift菜鸟入门视频教程-09-类和结构体
本人自己录制的swift菜鸟入门,欢迎大家拍砖,有什么问题能够在这里留言. 主要内容: 类和结构体对照 结构体和枚举是值类型 类是引用类型 类和结构体的选择 集合(collection)类型的赋值与复 ...
- Swift快速入门(一)第一个Swift程序
1. 本系列说明 本系列只是一个Swift快速入门的教程,并没有详尽的介绍Swift,Swift也并不是一个简单的编程语言,所以要想详尽的系统的学习Swift,本系列并不适合你,此系列只是让开发者可 ...
- Jeecg 初级入门
Jeecg 初级入门 1.部署jeecg 1.1.下载jeecg 请在jeecg 发布地址下载jeecg工程 1.2 导入myeclipse8.5 按照如下视图选择jeecg项目存放路径然后导入项目工 ...
- 【技术培训】招收Jeecg门徒 ---javaweb初级入门班
招收Jeecg门徒[javaweb初级入门班] 最近准备带徒弟,带些人才出来,我带徒弟的理念是实践为王,在实践中掌握原理,积累经验. 我带徒弟的方向是JAVA WEB,掌握各种主流框架.(后期会开展j ...
- mui初级入门教程(六)— 模板页面实现原理及多端适配指南
文章来源:小青年原创 发布时间:2016-07-26 关键词:mui,webview,template,os,多端适配 转载需标注本文原始地址: http://zhaomenghuan.github. ...
- Linux初级入门(第一次作业)
Linux初级入门 在本科期间学过一些Linux的简单命令,再次接触Linux不仅巩固了知识还学习到了很多新的东西. 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是 ...
- Swift高速入门之函数
函数 看一个函数的样例: func addNumbers( let a:Int,let b:Int)->Int{return a+b; } 实现两个数相加.函数必须以func开头,后面是函数名. ...
最新文章
- 忘了python关键语句?这份备忘录拯救你的记忆
- Galaxy 生信平台(二):生产环境部署
- AutoCAD安装失败怎样卸载重新安装AutoCAD,解决AutoCAD安装失败的方法总结
- Leaflet获取可视范围内4个顶点
- python分片操作_【python原理解析】python中分片的实现原理及使用技巧
- easyui不同的jsp页面之间混乱_16.jsp九大内置对象,四大作用域
- 2017微服务 mysql集群_成功升P7多亏掌握了这几点:高并发+Nginx+微服务+Redis+MySQL...
- 多级指针和静动态内存的跨函数访问
- 2014全国计算机二级vfp模拟试题和答案,2014年全国计算机二级考试VF模拟试题
- 优酷爱奇艺回应被处罚;拼多多主体公司法定代表人变更,黄峥退出董事席位;斗鱼发布开源框架Jupiter | 极客头条
- 【数学建模】day05-微分方程建模
- 2000w mysql_MySQL数据库优化(基于酒店2000w条数据)
- oracle使用with as 提升查询效率
- element el-table表头添加背景图片
- Linux中exec函数用法,linux exec用法总结
- 拆字在线版-扌斥字在纟戋片反
- hiredis-vip
- 中国石油大学《催化原理》第三阶段在线作业
- 十种进程注入技术介绍:常见注入技术及趋势调查
- 忘记网站上的密码时怎么办?用Python如何快速帮你找回?