自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 19-扩展

扩展(Extension)Swift 中的扩展,有点类似于 OC 中的分类)(Category)扩展可以为枚举、结构体、类、协议添加新功能可以添加方法、计算属性、下标、(便捷)初始化器、嵌套类型、协议等扩展不能办到的事情不能覆盖原有的功能不能添加存储属性,不能向已有的属性添加属性观察器不能添加父类不能添加指定初始化器…计算属性、下标、方法、嵌套类型// 计算属性extension Double { var km: Double { self * 1_000.0}

2020-11-27 23:36:28 134

原创 18-高级运算符

溢出运算符(OverflowOperator)Swift的算数运算符出现溢出时会抛出运行时错误 Swift有溢出运算符(&+、&-、&*),用来支持溢出运算var min = UInt8.minprint(min &- 1) // 255, Int8.maxvar max = UInt8.maxprint(max &+ 1) // 0, Int8.minprint(max &* 2) // 254, 等价于 max &+ max.

2020-11-23 23:04:20 205

转载 17- String 与 Array 分析

1.了解汇编调试常用手段LLDB读取寄存器的值:register read rax/格式(x/f/d )register write rax 10register read //所有寄存器读取内存地址:x/5xgx 内存地址x/3xw 3-显示3组数据x-是16进制 /f是浮点/d是十进制w(word)4个字节/ g(giant)-8个字节/b(byte)-1个字节/h(half)-两个字节打印函数调用栈b t执行步骤sifinish从编码到启动A

2020-11-19 11:33:16 214

原创 16-泛型

泛型(Generics)泛型可以将类型参数化,提高代码复用率,减少代码量// 交换两个变量的值func swapValues<T>(_ a: inout T, _ b: inout T) { (a, b) = (b, a)}var i1 = 10var i2 = 20print("交换前:i1: \(i1), i2: \(i2)")swapValues(&i1, &i2)print("交换后:i1: \(i1), i2: \(i2)")var

2020-11-16 19:27:34 113

原创 15-错误处理(Error)

错误类型开发过程中常见的错误语法错误(编译报错)逻辑错误运行时错误(可能导致闪退,一般也叫异常)…自定义错误Swift 中可以通过 Error协议自定义运行时的错误信息enum SomeError : Error {case illegalArg(String) case outOfBounds(Int, Int) case outOfMemory } 函数内部通过throw抛出自定义Error,可能会抛出Error的函数必须加上throw声明func divide

2020-11-16 12:17:26 194

原创 14-协议

协议(Protocol)protocol Drawable { func draw() var x: Int { get set } var y: Int { get } subscript(index: Int) -> Int { get set }}协议可以采用定义方法、属性、下标的声明,协议可以被枚举、结构体、类遵守(多个协议之间用逗号隔开)协议中定义方法时不能有默认参数值默认情况下,协议中定义的内容必须全部都实现也有办法办到只实现部分内容..

2020-06-24 17:13:55 165

原创 13-可选链

可选链(Optional Chaining)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(in..

2020-06-24 11:14:10 59

原创 12-初始化

初始化器/// 指定初始化器init(parameters) { statements}/// 便捷初始化器convenience init(parameters) { statements}类、结构体、枚举都可以自定义初始化器类有两种初始化器:指定初始化器(designated initializer)、便捷初始化器(convenience initializer)每个类至少有一个指定初始化器,指定初始化器是类的主要初始化器默认初始化器总是类的指定初始..

2020-06-23 16:07:53 115

原创 11-继承

继承(Inheritance)值类型(枚举、结构体)不支持继承,只有类支持继承没有父类的类,称为:基类Swift 并没有像 OC、Java 那样的规定:任何类最终都要继承自某个基类子类可以重写父类的下标、方法、属性,重写必须加上 override内存结构class Animal { var age = 0}class Dog: Animal { var weight = 0}class Erha: Dog { var iq = 0}..

2020-06-11 18:41:00 113

原创 10-下标

下标(subscript)使用 subscript 可以给任意类型(枚举、结构体、类)增加下标功能,有些地方也翻译为:下标脚本subscript 的语法类似于实例方法、计算属性,本质就是方法(函数)class Point { var x = 0.0, y = 0.0 subscript(index: Int) -> Double { set { if index == 0 { x = new..

2020-06-11 10:30:53 288

原创 09-方法

方法枚举、结构体、类都可以定义实例方法、类型方法实例方法(Instance Method):通过实例对象调用类型方法(Type Method):通过类型调用,用 static 或者 class 关键字定义class Car { static var count = 0 init() { Car.count += 1 } static func getCount() -> Int { count }}let c0 = Car()..

2020-06-09 20:09:17 99

原创 08-属性

属性Swift中跟实例相关的属性可以分为2大类 存储属性(Stored Property)类似于成员变量这个概念存储在实例的内存中结构体、类可以定义存储属性枚举不可以定义存储属性 计算属性(Computed Property)本质就是方法(函数)不占用实例的内存枚举、结构体、类都可以定义计算属性struct Circle { // 存储属性 var radius: Double // 计算属性 var diameter: Double..

2020-06-09 19:43:44 367

原创 07-闭包

闭包表达式在Swift中,可以通过func定义一个函数,也可以通过闭包表达式定义一个函数// 函数func sum(_ v1: Int, _ v2: Int) -> Int { v1 + v2 }// 闭包表达式的写法一var fn1 = {(v1: Int, v2: Int) -> Int in return v1 + v2}fn1(10, 20)// 闭包表达式的写法二let fn2 = {(v1: Int, v2: Int) -> Int in..

2020-06-08 14:24:10 128

原创 06-结构体和类

结构体在 Swift 标准库中,绝大多数的公开类型都是结构体,而枚举和类只占很小一部分比如 Bool、Int、Double、 String、Array、Dictionary 等常见类型都是结构体struct Date { var year: Int var month: Int var day: Int}var date = Date(year: 2020, month: 6, day: 5)所有的结构体都有一个编译器自动生成的初始化器(initializer..

2020-06-05 14:18:38 315

原创 05-可选项

可选项(Optional)可选项,一般也叫可选类型,它允许将值设置为 nil在类型名称后面加个 ? 来定义一个可选项var name: String? = "Swift"name = nilvar age: Int? // 默认就是 nilage = 10age = nil如果是可选项,它默认就有个 nil 值var array = [1, 15, 40,29]func get(_ index: Int) -> Int? { if index <..

2020-06-04 16:17:25 483

原创 04-枚举

枚举的基本用法enum Direction { case north case south case east case west}enum Direction { case north, south, east, west}var dir = Direction.westdir = Direction.eastdir = .northprint(dir) // northswitch dir {case .north: pr..

2020-06-04 14:27:43 144

原创 03-函数

函数的定义形参默认是let,也只能是letfunc pi() -> Double { return 3.14}func sum(v1: Int, v2: Int) -> Int { return v1 + v2}sum(v1: 10, v2: 20)无返回值func sayHello() -> Void { print("Hello")}func sayHello() -> () { print("Hello")}func s..

2020-06-03 17:30:32 160

原创 02-流程控制

if-elselet 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")}if 后面的条件可以省略小括号条件后面的大括号不可以省略if 后面的条件只能是 Bool ..

2020-06-03 15:58:36 83

原创 01-基础语法

Hello World- print("Hello World!")不用编写main函数,Swift将全局范围内的首句可执行代码作为程序入口一句代码尾部可以省略分号(;),多句代码写到同一行时必须用分号(;)隔开用var定义变量,let定义常量,编译器能自动推断出变量\常量的类型Playground可以快速预览代码效果,是学习语法的好帮手Command + Shift + Enter:运行整个PlaygroundShift + Enter:运行截止到某一行代码...

2020-06-03 14:52:21 117

原创 00-Swift简介

Swift 简介Swift是Apple在2014年6月WWDC发布的全新编程语言,中文名和LOGO是“雨燕”在Swift刚发布那会,百度\Google一下Swift,出现最多的搜索结果是美国著名女歌手Taylor Swift,中国歌迷称她为“霉霉”现在的搜索结果以Swift编程语言相关的内容居多Swift之父Chris LattnerClang编译器作者、LLVM项目的主要发起人从Apple离职后,先后跳槽到Tesla、Google目前在Google Brain从事AI研究..

2020-06-03 10:15:41 178

原创 00-汇编语言

程序的本质寄存器与内存通常,CPU会先将内存中的数据存储到寄存器中,然后再对寄存器中的数据进行运算假设内存中有块红色内存空间的值是3,现在想把它的值加1,并将结果存储到蓝色内存空间-> CPU首先会将红色内存空间的值放到rax寄存器中:movq 红色内存空间, %rax -> 然后让rax寄存器与1相加:addq $0x1, %rax-> 最后将值赋值给内存空间:movq %rax, 蓝色内存空间编程语言的发展机器语言:由0和1组成汇编..

2020-06-03 09:55:52 603

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除