
Swift
文章平均质量分 81
swift学习笔记。从入门到放弃。
学习笔记记录,以备不时之需
悠悠悠哉e
天行健君子以自强不息地势坤君子以厚德载物
展开
-
iOS DateFormatter转换时间戳部分手机crash问题
一系列调试后发现问题。把"yyyy-MM-dd HH:mm:ss" 改为 "yyyy-MM-dd HH:mm" 后就不会crash。秒可以单独处理,加到最后的tiemstamp 里就可以了。看着没毛病,一般的机器上也都能通过,但测试偶尔有机器Crash在 .dateFormat = "yyyy-MM-dd HH:mm:ss" 这一行。Crash日子也看不出啥问题。原因可能是传入 的精度太高了?有比较清楚的欢迎一起探讨。...原创 2022-08-04 15:56:16 · 442 阅读 · 1 评论 -
Swift实现二叉树的遍历(递归和非递归)
二叉树遍历搜索原创 2022-03-22 10:16:01 · 3092 阅读 · 0 评论 -
Swift实现排序算法
快速排序时间复杂度O( Nlog2N))1、选择基准点P,大的放在右边,小的放在左边。2、递归调用左边,右边func quickSorted (_ nums: inout [Int], _ left: Int, _ right: Int) { if left >= right { return ; } var l = left var r = right let pivot = nums[l] while l <原创 2022-03-20 21:24:07 · 3170 阅读 · 0 评论 -
Swift里自动引用计数
自动引用计数(ARC)Swift 使用自动引用计数(ARC)机制来跟踪和管理你的应用程序的内存。ARC 会在类的实例不再被使用时,自动释放其占用的内存Swift 使用 ARC 与在 Obejctive-C 中使用 ARC 非常类似自动引用计数的工作机制(引用计数器为0时才释放对象ARC 回收并释放了正在被使用中的实例后,该实例的属性和方法将不能再被访问和调用。如果试图访问这个实例,你的应用程序很可能会崩溃。为了确保使用中的实例不会被销毁,ARC 会跟踪和计算每一个实例正在被多少属性,常量和.原创 2021-10-13 20:00:45 · 391 阅读 · 0 评论 -
Swift里不透明类型
具有不透明返回类型的函数或方法会隐藏返回值的类型信息。函数不再提供具体的类型作为返回类型,而是根据它支持的协议来描述返回值。(多态?)不透明类型解决的问题例子,假设你正在写一个模块,用来绘制 ASCII 符号构成的几何图形。它的基本特征是有一个draw()方法,会返回一个代表最终几何图形的字符串,你可以用包含这个方法的Shape协议来描述:protocol Shape { //绘制里定义画法 方法 func draw() -> String}struct Trian...原创 2021-10-11 20:17:24 · 397 阅读 · 0 评论 -
Swift里泛型
泛型是 Swift 最强大的特性之一,很多 Swift 标准库是基于泛型代码构建的。实际上,即使你没有意识到,你也一直在语言指南中使用泛型。例如,Swift 的Array和Dictionary都是泛型集合。你可以创建一个Int类型数组,也可创建一个String类型数组,甚至可以是任意其他 Swift 类型的数组。泛型解决的问题(不同类型数据进行相同运算的问题?)// Int 类型的值交换函数func swapTwoInts(_ a: inout Int, _ b: inout I...原创 2021-10-01 10:57:11 · 897 阅读 · 0 评论 -
Swift里协议protocol
协议定义协议规定了用来实现某一特定任务或者功能的方法、属性,以及其他需要的东西。类、结构体或枚举都可以遵循协议,并为协议定义的这些要求提供具体实现。协议语法protocol SomeProtocol { // 这里是协议的定义部分}遵循协议语法结构体: 协议1, 协议2struct SomeStructure: FirstProtocol, AnotherProtocol { // 这里是结构体的定义部分}类:父类, 协议1, 协议2class SomeC原创 2021-09-08 20:14:15 · 447 阅读 · 0 评论 -
Swift里的扩展extension
目录扩展扩展的语法 (extension关键字。在其他语言里用来表示继承计算型属性(extension只能添加计算属性get方法,不能添加存储属性set方法,或观察者willSet、didSet,存储属性里构造器(扩展构造器必须调用指定构造器。只是改变存储属性?方法 (扩展示例方法和类方法)可变实例方法(mutating关键字用来表示,可修改self或属性)下标嵌套类型总结:扩展扩展可以给一个现有的类,结构体,枚举,还有协议添加新的功能。它还拥有不需要访问被扩原创 2021-09-07 17:56:58 · 1346 阅读 · 0 评论 -
Swift里嵌套类型
枚举常被用于为特定类或结构体实现某些功能。枚举可以方便的定义工具类或结构体,从而为某个复杂的类型所使用。为了实现这种功能,Swift 允许你定义嵌套类型,可以在支持的类型中定义嵌套的枚举、类和结构体。要在一个类型中嵌套另一个类型,将嵌套类型的定义写在其外部类型的{}内,而且可以根据需要定义多级嵌套。嵌套类型实践一个结构体BlackjackCard(二十一点),用来模拟BlackjackCard中的扑克牌点数。BlackjackCard结构体包含两个嵌套定义的枚举类型Suit和R...原创 2021-09-06 17:48:42 · 427 阅读 · 0 评论 -
Swift里类型转换
类型转换在 Swift 中使用is和as操作符实现。这两个操作符分别提供了一种简单达意的方式去检查值的类型或者转换它的类型。(用于check?)为类型转换定义类层次将类型转换用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型。(父类转换为子类或子类转成父类去处理?)//媒体父类class MediaItem { var name: String init(name: String) { self.name...原创 2021-09-03 20:34:53 · 1208 阅读 · 0 评论 -
Swift 里错误处理
错误处理(Error handling)是响应错误以及从错误中恢复的过程。Swift 在运行时提供了抛出、捕获、传递和操作可恢复错误(recoverable errors)的一等支持(first-class support)表示与抛出错误Swift中错误用遵循Error协议的类型的值来表示。这个空协议表明该类型可以用于错误处理。Swift的枚举类型适合构建一组相关的错误状态,枚举关联值还可以提供错误状态的额外信息游戏中操作自动贩卖机enum VendingMachineErro...原创 2021-09-01 17:23:02 · 412 阅读 · 0 评论 -
Swift 可选链式调用
Swift 的可选链式调用和 Objective-C 中向nil发送消息有些相像,但是 Swift 的可选链式调用可以应用于任意类型,并且能检查调用是否成功。使用可选链式调用代替强制展开(使用?而非!)通过在想调用的属性、方法,或下标的可选值后面放一个问号(?),可以定义一个可选链。区别:当可选值为空时可选链式调用只会调用失败,然而强制展开将会触发运行时错误。可选链式调用和强制展开的不同。示例class Person { var residence: Residence?..原创 2021-08-30 19:59:11 · 330 阅读 · 0 评论 -
swift 析构过程deinit
析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字deinit来标示,类似于构造器要用init来标示。析构过程原理(类似OC里的dealloc)Swift 通过自动引用计数(ARC)处理实例的内存管理。deinit { // 执行析构过程}每个类最多只能有一个析构器,而且析构器不带任何参数和圆括号析构器是在实例释放发生前被自动调用的。你不能主动调用析构器。析构器实践例子描述了一个简单的游戏,这里定义了两种新类型,分别是Ban...原创 2021-08-30 14:29:53 · 1343 阅读 · 0 评论 -
Swift 里构造过程
构造过程(实体的初始化等生命周期?)构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例使用前有个过程是必须的,它包括设置实例中每个存储属性的初始值和执行其他必须的设置或构造过程。存储属性的初始赋值(struct,enumerte)类和结构体在创建实例时,必须为所有存储型属性设置合适的初始值。存储型属性的值不能处于一个未知的状态可以在构造器中为存储型属性设置初始值,也可以在定义属性时分配默认值。存储型属性分配默认值或者在构造器中为设置初始值时,它们的值是被直接设置的,不会触发任何原创 2021-08-27 21:05:47 · 665 阅读 · 2 评论 -
Swift里继承
目录继承概念定义一个基类 (没有集成自其它类的类。自动会陈为基类)子类生成( :号 后跟继承的基类类似OC)子类重写基类某个特性(必须用override关键字来修饰)访问超类的方法,属性及下标重写方法 (override 修饰复写后的方法)重写属性重写属性的 Getters 和 Setters重写属性观察器防止重写 (用final 关键字来修饰)总结继承概念一个类可以继承另一个类的方法,属性和其它特性。当一个类继承其它类时,继承类叫子类,被继承类叫超类..原创 2021-08-24 11:31:58 · 239 阅读 · 0 评论 -
Swfit里的 下标
下标可以定义在类、结构体和枚举中,是访问集合、列表或序列中元素的快捷方式。可以使用下标的索引,设置和获取值,而不需要再调用对应的存取方法。一个类型可以定义多个下标,通过不同索引类型进行对应的重载。下标不限于一维,你可以定义具有多个入参的下标满足自定义类型的需求。下标语法(定义下标用subscript)过在实例名称后面的方括号中传入一个或者多个索引值来对实例进行查询。//使用?它的语法类似于实例方法语法和计算型属性语法。定义下标使用subscript关键字,与定义实例方法类似,都是指定一个..原创 2021-08-23 15:26:58 · 191 阅读 · 0 评论 -
Swfit里的方法 Methods
方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装了具体的任务与功能。类、结构体、枚举也可以定义类型方法;类型方法与类型本身相关联。类型方法与 Objective-C 中的类方法(class methods)相似学习swift的参考和笔记,感谢 :Swift编程 Swift51.com...原创 2021-08-14 22:17:52 · 140 阅读 · 0 评论 -
Swift里的属性
属性将值与特定的类、结构体或枚举关联。属性观察器可以添加到类本身定义的存储属性上,也可以添加到从父类继承的属性上。可以利用属性包装器来复用多个属性的 getter 和 setter 中的代码。存储属性一个存储属性就是存储在特定类或结构体实例里的一个常量或变量。存储属性可以是变量存储属性(用关键字var定义),也可以是常量存储属性(用关键字let定义)struct FixedLengthRange { var firstValue: Int let length: I...原创 2021-08-11 12:24:14 · 261 阅读 · 0 评论 -
Swift 类和结构体
Swift 中结构体和类的功能更加相近原创 2021-08-09 11:00:18 · 190 阅读 · 0 评论 -
Swift里的枚举
枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来使用这些值参考:枚举类型原创 2021-08-08 16:41:49 · 264 阅读 · 0 评论 -
Swift里的闭包
闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的匿名函数(Lambdas)比较相似。闭包采用如下三种形式之一:全局函数是一个有名字但不会捕获任何值的闭包 嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包 闭包表达式是一个利用轻量级语法所写的可以捕获其上下文中变量或常量值的匿名闭包闭包表达式闭包表达式是一种构建内联闭包的方式,它的语法简洁。在保证不丢失它语法清晰明了的同时,闭包表原创 2021-08-06 10:59:21 · 450 阅读 · 0 评论 -
Swift里的函数
函数是一段完成特定任务的独立代码片段。原创 2021-08-04 20:00:04 · 239 阅读 · 0 评论 -
Swift里的Set (集合)
目录初始化方法Set排序Set与Array 转换Array转SetSet 转为数组isEmpty添加元素移除添加元素是否包含 xflatMap类型转换( int 装换 为 sting)Set转换为Array [Int]遍历forEachfor in有序遍历集合成员关系1、intersection(_:)方法根据两个集合中都包含的值创建的一个新的集合Set2、 symmetricDifference 没有的元素组成新的S...原创 2021-08-01 20:12:09 · 1029 阅读 · 0 评论 -
Swift里的Dictionary
初始化let dictionay = Dictionary<String,String>() //[:]let letDic = ["A":"Frist","B":"Second","C":"Third"];var mutableDic:[Int:String] = [1:"One",2:"Two",3:"Three"]访问let dicValue = letDic["B"] //"Second"var mutableDicValue = mutableDic[2] //"原创 2021-08-01 19:49:38 · 246 阅读 · 0 评论 -
Swift里的Array
初始化let numbers = Array(repeating: 5, count: 3) //构造方式 [5,5,5]let numbersArry = ArraySlice(repeating: 2, count: 4)//数组薄片??同上[2,2,2,2]let numsArr = [1,3,5,7] //不可变 简化形式let numsArray:[Int] = [1,3,5,7] //不可变 声明类型var numsList = [String]()//声明空数组,必须指定类型v原创 2021-08-01 19:40:48 · 1743 阅读 · 0 评论 -
Swift里的字符串Sting
String原创 2021-08-01 19:28:14 · 395 阅读 · 0 评论 -
Swift基本数据类型
Int 、UInt()浮点型 :Float , DoubleDouble表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。 Float表示32位浮点数。精度要求不高的话可以使用此类型布尔型:Bool 值:ture , false字符串:String eg: "Hello, World!"字符:Charactereg : "C"可选型:Optional可选...原创 2021-07-28 22:33:18 · 937 阅读 · 0 评论