Swift-属性
属性Swift中跟实例相关的属性可以分为两大类:
存储属性 (Stored Property)
类似于成员变量这个概念
存储在实例的内存中
结构体、类可以定义存储属性
枚举 不可以 定义存储属性
计算属性 (Computed Property)
本质就是方法(函数)
不占用实例的内存
枚举、结构体、类都可以定义计算属性
123456789101112131415161718192021222324struct Circle { // 存储属性 var radius: Double // 计算属性 var diameter: Double { set { radius = newValue / 2 } get { radius * 2 } }}print(MemoryLayout<Circle>.stride) // 8var circle = C ...
Swift-结构体和类
结构体
在 Swift 标准库中,绝大多数的公开类型都是结构体,而枚举和类只占很小一部分
比如Bool、Int、Double、 String、Array、Dictionary等常见类型都是结构体
所有的结构体都有一个编译器自动生成的初始化器(initializer,初始化方法、构造器、构造方法)
在第⑥行调用的,可以传入所有成员值,用以初始化所有成员(存储属性,Stored Property)123456① struct Date { ② var year: Int③ var month: Int④ var day: Int⑤ } ⑥ var date = Date(year: 2019, month: 6, day: 23)
结构体的初始化器
编译器会根据情况,可能会为结构体生成多个初始化器,宗旨是:保证所有成员都有初始值
1234567891011121314151617181920212223242526struct Point { var x: Int var y: Int}var p1 = Point(x: ...
Swift-枚举
枚举的基本用法1234567891011121314151617181920enum Direction { case north case south case east case west}enum Direction2 { case north, south, east, west}var dir = Direction.westdir = Direction.eastdir = .northprint(dir)// northswitch dir {case. north: print("north")}
关联值(Associated Values)
有时将枚举的成员值跟其他类型的值关联存储在一起,会非常有用必要时let也可以改为var
12345678910111213141516171819202122232425262728293031// 日期enum Date { case digit(year: Int, month: Int, d ...
Swift-函数
函数的定义
形参默认是let,也只能是let
1234567func pi() -> Double { return 3.14}func sum(v1: Int, v2: Int) -> Int { return v1 + v2}sum(v1: 10, v2: 20)
无返回值
12345678910func sayHello() -> Void { print("Hello") }func sayHello() -> () { print("Hello") }func sayHello() { print("Hello") }
隐式返回(Implicit Return)
如果整个函数体是一个单一表达式,那么函数会隐式返回这个表达式1234func sum(v1: Int, v2: Int) -> Int { v1 + v2}sum(v ...
Swift-流程控制
if-else
if后面的条件只能是Bool类型
if后面的条件可以省略小括号
条件后面的大括号不能省略
12345678910let age = 4if age >= 22 { print("Get married")} else if age >= 18 { print("Being a adult")} else if age >= 7 { print("Go to school")} else { print("Just a child")}
while12345678910var num = 5while num > 0 { print("num is \(num)") num -= 1}// 打印了5次var num = -1repeat { print("num is \(num)&qu ...
Swift-基础语法
基础语法
不用编写main函数,Swift将全局范围内的首句可执行代码作为程序入口
一句代码尾部可以省略分号( ; ),多句代码写到同一行时必须用分号(;)隔开
用 var 定义变量, let 定义常量,编译器能自动推断出变量\常量的类型
注释123456789// 单行注释/*多行注释 */ /* 1 /* 多行注释的嵌套 */ 2 */
常量
只能赋值1次
它的值不要求在编译时期确定,但使用之前必须赋值1次
常量、变量在初始化之前都不能使用
标识符
标识符(比如常量名、变量名、函数名)几乎可以使用任何字符
标识符不能以数字开头,不能包含空白字符、制表符、箭头等特殊字符
1234567func 🐂🍺() { print("666")}🐂🍺()let 🦊 = "Fox"var 🐵 = "Monkey"
常见数据类型
值类型
枚举 enum optional
结构体 struct Bool, Int, Float, Double, Character String, A ...
佳能相机
一、佳能单反相机的相关问题1.佳能单反和尼康单反哪个好1、尼康的使用评价:上手较难,风景很好
尼康偏向金属风,所以材质坚硬,沉重的质感不得不说是相机品质的体现,风景拍摄很赞。但同时也增加了携带的困难。
繁琐和困难的上手教程是很多新手头疼的问题,所以新手上路并不推荐。
2、佳能的使用体验:上手容易,成像优质
佳能优越的人像摄影使佳能在摄影人像方面非常受人欢迎。搭载优秀的图像处理器,使得佳能拍出来的照片在后期处理非常出色。
简单易学的操作,让佳能深受新手欢迎。人们可以很容易地上手色彩和操作页面。
结论:
如果你是新手,对人像拍摄要求高,那么佳能可能更适合你;
反之如果你也是个专业大佬了,对风景拍摄要求高,那么可以选尼康。
2.单反相机 VS 微单相机 VS 普通数码相机(三者的比较)3.佳能单反型号的比较佳能所有数码单反采用以数字加字母D方式命名。在数字方面,数字位数越少,型号越高端。
全画幅和旗舰APS-C画幅单反:一位数机型XD
高端APS-C画幅单反:两位数XXD)
中端APS-C画幅单反:三位数XXXD
低端APS-C画幅单反:四位数XXXXD
二、如何去选购一台好 ...
思考致富
一、心想才能事成
如果一个人真想做一件事,那他一定会做成。
成功人士,最伟大的成功在于,面临失败时能坚持再迈出一步。
不管一件事有多困难,都要坚持做下去。
成功钟情于那些有成功意识的人。
我们是自己命运的主宰者。
二、欲望
拥有梦想,希望,愿望,欲望和计划。
明确的目标
绝不轻言放弃
没有人能被打败,除非接受失败的事实
一个人只有相信自己能得到某物,都会准备接受它。
每一种逆境,都隐藏着相同的优势。
三、信心
信心,爱和性的力量最为强大。
不断反复并确定地对潜意识发号施令,是自发培养信心的唯一方法。
抑制、排队消极负面情感,是一个人最基本的态度。
一切都与心态有关,最后的胜利,属于那个相信自己能行的我。
杰出人物,他们每个人的背后几乎都有一个女性的爱在支持着他。
四、自我暗示
你,只有你,来决定你为之奋斗的回报(即多钱意识),是否值得你为之辛苦地付出。
五、专业知识
知识只是潜在的力量,只有与明确的行动计划和目标相结合,知识才能成为力量。
人们只珍惜那些需要付费的东西。
那些安排业余时间在家学习的人,尤其是那些靠薪水为生的人,很少会满足于久居低层的现状,他们的行动为自己开 ...
好好学习
一、知识管理与认识优势知识与知识是不一样的,有些知识比其他知识的威力更大,少数的知识能够给我们带来关键的影响,这就是临界知识。
在海量信息即时获取时代,我们拼什么?
一阶段,知识数量构建认识优势
二阶段,知识获取速度构建认知优势
三阶段,知识深度构建认知优势,认识的深度
如何提升认知深度?为什么大多数人的学习层次上不去?
重要的是:认识效率
对于大多数人而言,我们知道的,只是我们以为自己知道了
如果我们的学习是在了解问题本质,了解解决方案的底层规律,能够让我们认清楚问题表象背后的实质,那我们就是在提升认知效率。
到底哪些知识值得学?
斜杠=兼职? 你更多的只是经历了一下而已,认知深度资并没有明显增加。
斜杠是结果,不是原因。斜杠是提升认知深度的结果,而不是追求多元的结果。
一开始就能带来直接利益和诱惑的事情,很可能要拿未来的机会作代价。
一个人,活成一支队伍。
无用之用,方为大用。
执行能力、专业能力和结构能力都应该学。
二、掌握临界知识的底层思维与方法对于学习临界知识而言,首先要掌握的底层思维与方法,其次才是具体的知识和技能
跳出“低水平勤奋陷阱”
读书,自然是最基本 ...
Block - __block本质
__block修饰符
__block可以用于解决block内部无法修改auto变量值的问题
__block不能修饰全局变量、静态变量(static)
编译器会将__block变量包装成一个对象
示例1:__block修饰auto常量时
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647__block int age = 10;^{ NSLog(@"age is %d", age);}();//C++源码分析//block对象信息struct __block_impl { void *isa; int Flags; int Reserved; void *FuncPtr;};//block描述信息,大小,copy, dispose操作struct __main_block_desc_0 { size_t reserved; size_t Block_si ...













