![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Swift笔记
文章平均质量分 81
Swift笔记
SY.ZHOU
移动端开发
展开
-
IOS开发swift笔记01-汇编
1、程序运行的本质:程序运行时将存在硬盘中的软件装载进内存,计算机的CPU可读写内存,通过读写内存信息处理控制计算机的显示器、音响、话筒、其他设备。CPU:主要由寄存器、运算器、控制器组成。寄存器负责对正在运行程序的数据存储。运算器负责信息处理,控制器控制计算机做出相应的响应。2、寄存器与内存一般CPU会将内存的数据存储到寄存器中,然后在对寄存器中的数据进行运算。例如:内存中有一块a内存存储的值是2,现在想把他的值加1。CPU会将a内存的值存储到CPU的RAX寄存器中:movq a, %ra原创 2020-08-31 20:20:04 · 160 阅读 · 0 评论 -
IOS开发Swift笔记04-流程控制
if-elselet age = 10if age>=22 { print("可结婚")}else if age>=18{ print("成年")}else if age>7{ print("少年")}else{ print("小孩")}/** if后面的条件是bool类型 if后面的条件可以省略小括号 条件后面大括号不可以省略 */whilevar num = 5while num>0 { print("n原创 2020-09-01 01:27:07 · 138 阅读 · 0 评论 -
IOS-swift状态栏设置Status bar style
更改状态系统颜色setNeedsStatusBarAppearanceUpdate()override var preferredStatusBarStyle: UIStatusBarStyle { let _ = super.preferredStatusBarStyle return UIStatusBarStyle.lightContent}preferredStatusBarStyle不调用的问题1、删除info.plist 这个键值对 <key>UI原创 2020-09-14 21:59:13 · 899 阅读 · 0 评论 -
IOS开发Swift笔记26-响应式编程
响应式编程(Reactive Programming,简称RP)也是一种编程范式,于1997年提出,可以简化异步编程,提供更优雅的数据绑定一般与函数式融合在一起,所以也会叫做:函数响应式编程(Functional Reactive Programming,简称FRP)——————————————————————————————比较著名的、成熟的响应式框架ReactiveCocoa简称RAC,有Objective-C、Swift版本官网: http://reactivecocoa.io/git原创 2020-09-09 17:38:44 · 234 阅读 · 0 评论 -
IOS开发Swift笔记25-面向协议编程
面向协议编程面向协议编程(Protocol Oriented Programming,简称POP)是Swift的一种编程范式, Apple于2015年WWDC提出在Swift的标准库中,能见到大量POP的影子同时,Swift也是一门面向对象的编程语言(Object Oriented Programming,简称OOP)在Swift开发中,OOP和POP是相辅相成的,任何一方并不能取代另一方POP能弥补OOP一些设计上的不足————————————————————————————回顾OOPO原创 2020-09-09 00:43:59 · 221 阅读 · 0 评论 -
IOS开发Swift笔记24-函数式编程
Array的常见操作var arr = [1, 2, 3, 4] // 重组var arr2 = arr.map { $0*2} // [2, 4, 6, 8]// 过滤var arr3 = arr.filter { $0%2 == 0} // [2, 4]// 元素演绎var arr4 = arr.reduce(0) { $0+$1} // 10var arr5 = arr.reduce(0, +) // 10print(arr5)func double(_ i: Int) -&原创 2020-09-09 00:21:35 · 95 阅读 · 0 评论 -
IOS开发Swift笔记23-模式匹配
模式什么是模式?模式是用于匹配的规则,比如switch的case,捕捉错误的catch、if、g’uard、while、for语句的条件————————————————————————————Swift中的模式有通配符模式(Wildcard Pattern)标识符模式(Identifier Pattern)值绑定模式(Value-Binding Pattern)元组模式(Tuple Pattern)枚举Case模式(Enumeration Case Pattern)可选模式(Optio原创 2020-09-08 19:32:39 · 182 阅读 · 0 评论 -
IOS开发Swift笔记22-字面量
var age = 10var isRed = falsevar name = "Jack"上面代码:10, false,“Jack”都是字面量————————————————————————————常见字面量的默认类型public typealias IntegerLiteralType = Intpublic typealias FloatLiteralType = Doublepublic typealias BooleanLiteralType = Boolpublic type原创 2020-09-08 16:16:30 · 75 阅读 · 0 评论 -
IOS开发Swift笔记21-内存管理、指针
内存管理跟OC一样,Swift也是采取基于引用计数的ARC内存管理(针对堆空间)Swift的ARC中有3种引用强引用(strong reference):默认情况下,引用都是强引用弱引用(weak reference):通过weak定义弱引用-必须是可选类型的var,因为实例销毁后,ARC会自动将弱引用设置为nil-ARC自动给弱引用设置nil时,不会触发属性观察器无主引用(unowned reference):通过unowned定义无主引用-不会产生强引用,实例销毁后仍然存储着实例的内存原创 2020-09-08 01:52:14 · 138 阅读 · 0 评论 -
IOS开发Swift笔记20-访问控制
访问控制在访问权限控制这块,Swift提供了5个不同的访问级别(以下是从高到低排列, 实体指被访问级别修饰的内容)open:允许在定义实体的模块、其他模块中访问,允许其他模块进行继承、重写(open只能用在类、类成员上)public:允许在定义实体的模块、其他模块中访问,不允许其他模块进行继承、重写internal:只允许在定义实体的模块中访问,不允许在其他模块中访问fileprivate:只允许在定义实体的源文件中访问private:只允许在定义实体的封闭声明中访问绝大部分实体默认都是原创 2020-09-07 18:53:50 · 132 阅读 · 0 评论 -
IOS开发Swift笔记19-扩展(Extension)
扩展(Extension)Swift中的扩展,有点类似于OC中的分类(Category)扩展可以为枚举、结构体、类、协议添加新功能可以添加方法、计算属性、下标、(便捷)初始化器、嵌套类型、协议等等扩展不能办到的事情不能覆盖原有的功能不能添加存储属性,不能向已有的属性添加属性观察器不能添加父类不能添加指定初始化器,不能添加反初始化器…计算属性、下标、方法、嵌套类型extension Double { var km: Double { self * 1_000.0 }原创 2020-09-07 18:11:59 · 405 阅读 · 1 评论 -
IOS开发Swift笔记18-高级运算符
关于String的思考1个String变量占用多少内存?下面2个String变量,底层存储有什么不同?var str1 = "0123456789"var str2 = "0123456789ABCDEF"原创 2020-09-07 17:51:23 · 98 阅读 · 0 评论 -
IOS开发Swift笔记17-泛型
泛型泛型可以将类型参数化,提高代码复用率,减少代码量泛型函数赋值给变量————————————————————————————————————func swapValue<T>(_ a: inout T, _ b: inout T){ (a, b) = (b, a)}var i1 = 10var i2 = 20swap(&i1, &i2)var d1 = 10.0var d2 = 20.0swap(&d1, &d2)struct原创 2020-09-06 02:40:26 · 141 阅读 · 0 评论 -
IOS开发Swift笔记16-错误处理
错误类型开发过程中常见的错误类型语法错误(编译报错)逻辑错误运行时错误(可能导致闪崩,一般也叫异常)…——————————————————自定义错误Swift中可以通过Error协议自定义运行时的错误信息函数内部通过throw抛出自定义Error,可能会抛出Error的函数必须加上throwsenum SomeError: Error { case illegalArg(String) case outOfBounds(Int, Int) case outOf原创 2020-09-05 23:25:28 · 128 阅读 · 0 评论 -
IOS开发Swift笔记15-协议
协议协议可以定义方法、属性、下标的声明。协议可以被枚举、结构体、类遵守(多个协议用逗号分开)protocol Drawable { func draw() var x: Int {get set} var y: Int {get} subscript(index: Int) -> Int {get set}}protocol Test1 {}protocol Test2 {}protocol Test3 {}class TestClass: Test1,原创 2020-09-05 02:12:22 · 115 阅读 · 0 评论 -
IOS开发Swift14-可选链
可选链class Car { var price = 0 }class Dog { var weight = 0 }class Person { var name: String = "" var dog: Dog = Dog() var car: Car? = Car() func age() -> Int { 18 } func eat() { print("Person eat") } subscript(index: Int) ->原创 2020-09-04 18:51:30 · 96 阅读 · 0 评论 -
IOS开发Swif笔记13-初始化
初始化器类、结构体、枚举都可以定义初始化器类有2种初始化器:指定初始化器、便捷初始化器 // 指定初始化器 init (prameters){ statements} // 便捷初始化器convenience init(prameters){ statements}每个类至少有一个指定初始化器,指定初始化器是类的主要初始化器。默认初始化器总是类的指定初始化器。类偏向于少量指定初始化器,一个类通常只有一个指定初始化器。初始化器的相互调用规则指定初始化器必须原创 2020-09-04 18:31:53 · 134 阅读 · 0 评论 -
IOS开发Swift笔记12-继承
继承值类型(枚举、结构体)不支持继承,只有类支持继承没有父类的类,称为:基类Swift并没有想OC,Java那样的规定:任何类最终都要继承自某个基类子类可以重写父类的下标、方法、属性,重写必须加上override关键字class Animal { var age = 0}class Dog: Animal { var weight = 0}class ErHa: Dog { var iq = 0}let a = Animal()a.age = 10p原创 2020-09-03 22:03:21 · 172 阅读 · 0 评论 -
IOS开发Swift笔记11-方法和下标
方法枚举、结构体、类都可以定义实力方法、类型方法。实例方法:通过实力对象调整。类型方法:通过类对象调用,用static或者class关键字定义class Car { static var cout = 0 init() { Car.cout += 1 } static func getCount() -> Int { cout }}let c0 = Car()let c1 = Car()let c2 = Car(原创 2020-09-03 19:53:04 · 93 阅读 · 0 评论 -
IOS开发Swift笔记10-属性
属性Swift中跟实例相关的属性可以分为2大类1、存储属性类似于成员变量存储在实例的内存中结构体和类都可以定义存储属性枚举不可以定义存储属性2、计算属性本质就是方法(函数)不占用实例的内存枚举、结构体、类都可以定义计算属性struct Circle { // 存储属性 var radius: Double // 计算属性 var diameter: Double { set { radius = newValue原创 2020-09-03 01:14:13 · 169 阅读 · 0 评论 -
IOS开发Swift笔记09-闭包
闭包表达式在Swift中,可以通过func定义一个函数,也可以通过闭包表达式定义一个函数func sun(_ v1: Int, _ v2: Int) -> Int {v1 + v2}var fn = { (v1: Int, v2: Int) -> Int in return v1 + v2}print(fn(10, 20))var a = { (v1: Int, v2: Int) -> Int in return v1 + v2}(10,原创 2020-09-02 23:57:40 · 504 阅读 · 0 评论 -
IOS开发Swift笔记08-结构体和类
结构体在 Swift 标准库中,绝大多数的公开类型都是结构体,而枚举和类只占很小一部分比如Bool、Int、Double、 String、Array、Dictionary等常见类型都是结构体① struct Date {② var year: Int③ var month: Int④ var day: Int⑤ }⑥ var date = Date(year: 2019, month: 6, day: 23)所有的结构体都有一个编译器自动生成的初始化器(initia原创 2020-09-02 00:27:36 · 147 阅读 · 0 评论 -
IOS开发Swift笔记07-可选项Optional
Optional可选项,一般也叫可选类型,它允许将值设置为nil在类型名称后面加个问号 ? 来定义一个可选项var name: String? = "Jack"name = nil var age: Int? // 默认就是nilage = 10age = nilvar array = [1, 15, 40, 29]func get(_ index: Int) -> Int? {if index < 0 ||原创 2020-09-01 23:42:30 · 230 阅读 · 0 评论 -
IOS开发Swift笔记06-枚举
枚举的基本用法enum Direction { case north case south case east case west}enum Direction1 { case north, south, east, west}var dir = Direction.northdir = Direction.eastdir = .westprint(dir)switch dir{ case .north: print("no原创 2020-09-01 22:34:10 · 103 阅读 · 0 评论 -
IOS开发Swift笔记05-函数
函数定义// 函数的定义func pi() -> Double { return 3.14}func sum(v1: Int, v2: Int) -> Int { return v1 + v2 } sum(v1: 10, v2: 20)原创 2020-09-01 02:31:23 · 183 阅读 · 0 评论 -
IOS开发Swift笔记03-基础语法
print("hello World!")不用编写main函数,Swift讲全局范围内的首句可执行代码作为程序的入口。一句代码尾部可以省略分号(;),多聚代码写到同一行是必须用;断开。用var定义变量,let定义常量,编译器能自动推断出变量/常量的类型。Playground可以快速预览代码效果,是学习语法的好帮手Command + Shift + Enter:运行整个PlaygroundShift + Enter:运行截止到某一行代码Playground - ViewPlayground原创 2020-08-31 22:24:28 · 181 阅读 · 0 评论 -
IOS开发Swift笔记02-Swift简介
Swift版本历时5年发展,从Swift1.x发展到了Swift5.x版本,经历了多次重大改变,ABI终于稳定API(Application Programming Interface):应用程序编程接口源代码和库之间的接口ABI(Application Binary Interface):应用程序二进制接口应用程序与操作系统之间的底层接口涉及的内容有:目标文件格式、数据类型的大小\布局\对齐、函数调用约定等等随着ABI的稳定,Swift语法基本不会再有太大的变动,此时正是学习Swift的最佳原创 2020-08-31 21:05:16 · 157 阅读 · 0 评论