- 博客(103)
- 资源 (28)
- 收藏
- 关注
原创 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
374
1
原创 装饰模式Decorate和适配器模式adapter 区别
装饰者传入A 类 返回也是A类。 过程中只是将A添加了一些属性(功能),但并未改变A本身类适配器传入A类 返回B类。过程中起到数据的装配作用,改变了A本身的类型,去适配为B。更像一个转接口的功能。...
2022-03-30 12:25:41
214
原创 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
3089
原创 LLVM 编译器
目录为什么需要编译?编译器的作用便是把我们的高级编程语言通过一系列的操作转化成可被计算机执行的机器语言编译器和解释器编译器是一种计算机程序,负责把一种编程语言编写的源码转换成另外一种计算机代码,后者往往是以二进制的形式被称为目标代码(object code)。解释器是一种计算机程序,它直接执行由编程语言或脚本语言编写的代码,并不会把源代码预编译成机器码。编译器在语言处理的位置预处理器:把存储在不
2022-02-08 16:22:33
3209
原创 Swift里自动引用计数
自动引用计数(ARC)Swift 使用自动引用计数(ARC)机制来跟踪和管理你的应用程序的内存。ARC 会在类的实例不再被使用时,自动释放其占用的内存Swift 使用 ARC 与在 Obejctive-C 中使用 ARC 非常类似自动引用计数的工作机制(引用计数器为0时才释放对象ARC 回收并释放了正在被使用中的实例后,该实例的属性和方法将不能再被访问和调用。如果试图访问这个实例,你的应用程序很可能会崩溃。为了确保使用中的实例不会被销毁,ARC 会跟踪和计算每一个实例正在被多少属性,常量和.
2021-10-13 20:00:45
279
原创 Swift里不透明类型
具有不透明返回类型的函数或方法会隐藏返回值的类型信息。函数不再提供具体的类型作为返回类型,而是根据它支持的协议来描述返回值。(多态?)不透明类型解决的问题例子,假设你正在写一个模块,用来绘制 ASCII 符号构成的几何图形。它的基本特征是有一个draw()方法,会返回一个代表最终几何图形的字符串,你可以用包含这个方法的Shape协议来描述:protocol Shape { //绘制里定义画法 方法 func draw() -> String}struct Trian...
2021-10-11 20:17:24
346
原创 Swift里泛型
泛型是 Swift 最强大的特性之一,很多 Swift 标准库是基于泛型代码构建的。实际上,即使你没有意识到,你也一直在语言指南中使用泛型。例如,Swift 的Array和Dictionary都是泛型集合。你可以创建一个Int类型数组,也可创建一个String类型数组,甚至可以是任意其他 Swift 类型的数组。泛型解决的问题(不同类型数据进行相同运算的问题?)// Int 类型的值交换函数func swapTwoInts(_ a: inout Int, _ b: inout I...
2021-10-01 10:57:11
800
原创 Swift里协议protocol
协议定义协议规定了用来实现某一特定任务或者功能的方法、属性,以及其他需要的东西。类、结构体或枚举都可以遵循协议,并为协议定义的这些要求提供具体实现。协议语法protocol SomeProtocol { // 这里是协议的定义部分}遵循协议语法结构体: 协议1, 协议2struct SomeStructure: FirstProtocol, AnotherProtocol { // 这里是结构体的定义部分}类:父类, 协议1, 协议2class SomeC
2021-09-08 20:14:15
381
原创 Swift里的扩展extension
目录扩展扩展的语法 (extension关键字。在其他语言里用来表示继承计算型属性(extension只能添加计算属性get方法,不能添加存储属性set方法,或观察者willSet、didSet,存储属性里构造器(扩展构造器必须调用指定构造器。只是改变存储属性?方法 (扩展示例方法和类方法)可变实例方法(mutating关键字用来表示,可修改self或属性)下标嵌套类型总结:扩展扩展可以给一个现有的类,结构体,枚举,还有协议添加新的功能。它还拥有不需要访问被扩
2021-09-07 17:56:58
1223
原创 Swift里嵌套类型
枚举常被用于为特定类或结构体实现某些功能。枚举可以方便的定义工具类或结构体,从而为某个复杂的类型所使用。为了实现这种功能,Swift 允许你定义嵌套类型,可以在支持的类型中定义嵌套的枚举、类和结构体。要在一个类型中嵌套另一个类型,将嵌套类型的定义写在其外部类型的{}内,而且可以根据需要定义多级嵌套。嵌套类型实践一个结构体BlackjackCard(二十一点),用来模拟BlackjackCard中的扑克牌点数。BlackjackCard结构体包含两个嵌套定义的枚举类型Suit和R...
2021-09-06 17:48:42
369
原创 Swift里类型转换
类型转换在 Swift 中使用is和as操作符实现。这两个操作符分别提供了一种简单达意的方式去检查值的类型或者转换它的类型。(用于check?)为类型转换定义类层次将类型转换用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型。(父类转换为子类或子类转成父类去处理?)//媒体父类class MediaItem { var name: String init(name: String) { self.name...
2021-09-03 20:34:53
1128
原创 学习为什么是一件感觉痛苦的事情
应该大部分人都会觉得学习是一件痛苦的事情。反正刚开始进入的时候不会快乐!虽然学习完成后会有成就感快乐,但进入状态前感觉痛苦,拒绝…也是昨晚和QP聊天,突然聊到的问题。今天百度了一下,觉得简书上这个写的还是很明了的。以下大部分Copy自原作者,也是看到后想留下个笔记吧学习感觉痛苦的根源最直接的答案是:耗能!我们在学新知识、新技能时为什么会觉得累?进化心理学认为这有可能是生物本能。我们大脑的基本结构,简单说就是神经元细胞及其上突触的结合体。人类所有的知识、记忆、技能等一切你能想到的东西,在生物学
2021-09-03 17:59:38
3812
原创 Swift 里错误处理
错误处理(Error handling)是响应错误以及从错误中恢复的过程。Swift 在运行时提供了抛出、捕获、传递和操作可恢复错误(recoverable errors)的一等支持(first-class support)表示与抛出错误Swift中错误用遵循Error协议的类型的值来表示。这个空协议表明该类型可以用于错误处理。Swift的枚举类型适合构建一组相关的错误状态,枚举关联值还可以提供错误状态的额外信息游戏中操作自动贩卖机enum VendingMachineErro...
2021-09-01 17:23:02
309
原创 Swift 可选链式调用
Swift 的可选链式调用和 Objective-C 中向nil发送消息有些相像,但是 Swift 的可选链式调用可以应用于任意类型,并且能检查调用是否成功。使用可选链式调用代替强制展开(使用?而非!)通过在想调用的属性、方法,或下标的可选值后面放一个问号(?),可以定义一个可选链。区别:当可选值为空时可选链式调用只会调用失败,然而强制展开将会触发运行时错误。可选链式调用和强制展开的不同。示例class Person { var residence: Residence?..
2021-08-30 19:59:11
256
原创 swift 析构过程deinit
析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字deinit来标示,类似于构造器要用init来标示。析构过程原理(类似OC里的dealloc)Swift 通过自动引用计数(ARC)处理实例的内存管理。deinit { // 执行析构过程}每个类最多只能有一个析构器,而且析构器不带任何参数和圆括号析构器是在实例释放发生前被自动调用的。你不能主动调用析构器。析构器实践例子描述了一个简单的游戏,这里定义了两种新类型,分别是Ban...
2021-08-30 14:29:53
1143
原创 Swift 里构造过程
构造过程(实体的初始化等生命周期?)构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例使用前有个过程是必须的,它包括设置实例中每个存储属性的初始值和执行其他必须的设置或构造过程。存储属性的初始赋值(struct,enumerte)类和结构体在创建实例时,必须为所有存储型属性设置合适的初始值。存储型属性的值不能处于一个未知的状态可以在构造器中为存储型属性设置初始值,也可以在定义属性时分配默认值。存储型属性分配默认值或者在构造器中为设置初始值时,它们的值是被直接设置的,不会触发任何
2021-08-27 21:05:47
519
2
原创 Swift里继承
目录继承概念定义一个基类 (没有集成自其它类的类。自动会陈为基类)子类生成( :号 后跟继承的基类类似OC)子类重写基类某个特性(必须用override关键字来修饰)访问超类的方法,属性及下标重写方法 (override 修饰复写后的方法)重写属性重写属性的 Getters 和 Setters重写属性观察器防止重写 (用final 关键字来修饰)总结继承概念一个类可以继承另一个类的方法,属性和其它特性。当一个类继承其它类时,继承类叫子类,被继承类叫超类..
2021-08-24 11:31:58
187
原创 Swfit里的 下标
下标可以定义在类、结构体和枚举中,是访问集合、列表或序列中元素的快捷方式。可以使用下标的索引,设置和获取值,而不需要再调用对应的存取方法。一个类型可以定义多个下标,通过不同索引类型进行对应的重载。下标不限于一维,你可以定义具有多个入参的下标满足自定义类型的需求。下标语法(定义下标用subscript)过在实例名称后面的方括号中传入一个或者多个索引值来对实例进行查询。//使用?它的语法类似于实例方法语法和计算型属性语法。定义下标使用subscript关键字,与定义实例方法类似,都是指定一个..
2021-08-23 15:26:58
146
原创 Swfit里的方法 Methods
方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装了具体的任务与功能。类、结构体、枚举也可以定义类型方法;类型方法与类型本身相关联。类型方法与 Objective-C 中的类方法(class methods)相似学习swift的参考和笔记,感谢 :Swift编程 Swift51.com...
2021-08-14 22:17:52
98
原创 Swift里的属性
属性将值与特定的类、结构体或枚举关联。属性观察器可以添加到类本身定义的存储属性上,也可以添加到从父类继承的属性上。可以利用属性包装器来复用多个属性的 getter 和 setter 中的代码。存储属性一个存储属性就是存储在特定类或结构体实例里的一个常量或变量。存储属性可以是变量存储属性(用关键字var定义),也可以是常量存储属性(用关键字let定义)struct FixedLengthRange { var firstValue: Int let length: I...
2021-08-11 12:24:14
183
原创 Swift里的闭包
闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的匿名函数(Lambdas)比较相似。闭包采用如下三种形式之一:全局函数是一个有名字但不会捕获任何值的闭包 嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包 闭包表达式是一个利用轻量级语法所写的可以捕获其上下文中变量或常量值的匿名闭包闭包表达式闭包表达式是一种构建内联闭包的方式,它的语法简洁。在保证不丢失它语法清晰明了的同时,闭包表
2021-08-06 10:59:21
382
原创 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
891
原创 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
172
原创 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
1594
原创 Swift基本数据类型
Int 、UInt()浮点型 :Float , DoubleDouble表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。 Float表示32位浮点数。精度要求不高的话可以使用此类型布尔型:Bool 值:ture , false字符串:String eg: "Hello, World!"字符:Charactereg : "C"可选型:Optional可选...
2021-07-28 22:33:18
828
原创 NSString
1、 string里是否包含字符* NSRange range = [string rangeOfString:@"*"]; if (range.location != NSNotFound) { // 包含字符 * }2、sing分段截取到数组里NSArray *array = [string componentsSeparatedByString:@"*"];
2021-07-28 22:14:38
82
原创 ES & TS & JS
瞎想、瞎写、瞎抄。天下文章唯抄不断,理解万岁!ES:基础,JS是实现了ES相关的协议JS: 一堆尖括号的的语音。(看着凌乱,像远古时期,现在已经被抛弃的低效率的数据承载XML一样。不解的是为啥JS还是在大前端如此的发光发热,火的发紫)TS:实现了一些JS更广阔的功能,但最后是要编译为JS。...
2021-03-24 21:11:48
320
原创 iOS 正则表达式过滤
//用于 testField: shouldChangeCharactersInRange: replacementString:里输入过滤- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { // 输入校验,只允许数字 NSString *regex = @"^[0-9]*$"; .
2020-11-17 15:22:58
525
原创 iOS float转string精度丢失问题解决
- (NSString *)stringFromNumber:(CGFloat)text { NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; [numberFormatter setPositiveFormat:@"####.####"]; NSString *formattedNumberString = [numberFormatter stringFromNumber:[NSNumb.
2020-11-17 15:19:22
2590
1
原创 编译原理4 - 语法分析 (三)
十三、LR1 分析法SLR的缺陷SLR只是简单的考察下一个符号b是否属于归纳项目A ->(定义为)α相关联的FOLLOW(A),但b∈FOLLOW(A)只是归纳α的一个必要条件,而非充分条件。(b 在A 的Follw 集,不能确保一定就可以规约。Follw 集可以排除不合理的规约,但不能确保正确的规约LR(1) 分析法的提出对于A ->α的规约,在不同位置A会要求不同的...
2020-02-16 21:34:19
894
1
原创 编译原理4 - 语法分析 (二)
目录八、自底向上的分析概念自底向上的语法分析移入-规约分析例子移入-规约分析的工作过程移入-规约分析可采取的4种动作移入-规约分析关键问题九、LR分析法概念LR分析法定义LR(K)分析LR分析法的基本原理句柄LR 分析器(自动机)的总体结构例子LR分析器的工作过程LR分析器的算法如何构造给定的LR分析表?十、LR(0) 分析L...
2020-02-09 13:28:20
1450
原创 编译原理4 - 语法分析 (一)
目录一、自顶向下的语法分析概述最左推导最右推导自顶向下的语法分析采用最左推导方式自顶向下的语法分析的通用形式(分析过程递归下降分析回溯预测分析二、文法转换消除左递归消除间接左递归消除左递归的算法提取左公因子三、LL1文法(预测分析法)S_文法 :(简单的确定性文法) 预测分析法的工作过程S_文法 :非终结符的后继符号集...
2020-02-08 10:56:13
939
JHCookieRequesTest.zip
2019-06-13
hitTest 与pointInside 方法的应用
2015-10-11
FMDB操作demo (需要至少12个字的名称,过分!)
2013-07-01
GCD_demo __ 练习
2013-06-18
iOS从网络异步加载图片
2013-05-15
AISHTTP发送请求,NSXML解析XML文件
2013-05-13
SplitViewControllerDemo
2013-01-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人