自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 编程范式 --- 目录

编程范式 — 函数式编程(Funtional Programming,简称FP)编程范式 — 面向协议编程(Protocol Oriented Programming,简称POP)

2019-09-29 14:29:05 179

原创 LeetCode题解 --- 目录

LeetCode — 21. 合并两个有序链表LeetCode — 23. 合并K个排序链表LeetCode — 98. 验证二叉搜索树LeetCode — 150.逆波兰表达式求值

2019-09-22 18:20:46 315

原创 Swift --- 目录

Swift — swfitcSwift — 属性(property)和输入输出参数(inout)Swift — 下标(subscript)Swift — 方法前缀,以及nonmutatingSwift — 初始化器相关(Initialize)Swift — 继承(Inheritance)Swift — 协议(protocol)Swift — 扩展(Ex...

2019-09-20 14:54:32 652

原创 编程范式 --- 面向协议编程(Protocol Oriented Programming,简称POP)

面向协议编程(Protocol Oriented Programming,简称POP)是Swift的一种编程范式,Apple于2015年WWDC踢出在Swift的标准库中,能见到大量POP的影子同时,Swift也是一门面向对象的编程语言(Objec Oriented Programming,简称OOP)在Swift开发中,OOP和POP是相辅相成的,任何一方并不能取代另...

2019-09-29 14:24:35 543

原创 卸载McAfee for Mac

1 Open a Terminal window.2 Type the following command, then press return.(卸载命令)sudo /usr/local/McAfee/uninstall EPMThe uninstallation command is case sensitive.3 Type the administrator password wh...

2019-09-23 19:12:58 2337 1

原创 Swift --- 可选项本质

可选项的本质是enum类型public enum Optional<Wrapped> : ExpressibleByNilLiteral { case none case some(Wrapped) public init(_ some: Wrapped)}var age: Int? = 10var age0: Optional<Int&gt...

2019-09-23 17:44:01 261

原创 Swift --- 内存管理

跟OC一样,Swift也是采取基于引用技术的ARC内存管理方案(针对堆空间)Swift的ARC中有3中引用:强引用(strong reference):默认情况下,引用都是强引用弱引用(weak reference):通过weak定义弱引用必须是可选类型的var,因为实力销毁后,ARC户自动将弱引用设置为nilARC自动给弱引用设置nil时,不会触发属性观察器无主引用...

2019-09-23 17:14:16 234

原创 Swift --- 指针

Swift中也有专门的指针类型,这些都被定性为“Unsafe”(不安全的),常见的有以下4种类型:UnsafePointer 类似于 const Pointee *UnsafeMutablePointer 类似于 Pointee *UnsafeRawPointer 类似于 const void *UnsafeMutableRawPointer 类似于 void *var age ...

2019-09-23 16:07:14 260

原创 编程范式 --- 函数式编程(Funtional Programming,简称FP)

函数式编程(Funtional Programming,简称FP)是一种编程范式,也就是如何编写程序的方法论主要思想:把计算过程尽量分解成一系列可复用函数的调用主要特征:函数是“第一等公民”:函数与其他数据类型一样的地位,可以赋值给其他变量,也可以作为函数参数、函数返回值函数式编程最早出现在LISP语言,绝大大部分的代码编程语言也对函数式编程做了不同程度的支持,比如:Haskel...

2019-09-23 15:25:54 2136 1

原创 LeetCode --- 104. 二叉树的最大深度

LeetCode链接:104. 二叉树的最大深度解法1:层序遍历 - 迭代时间复杂度:O(n),空间复杂度:O(n)public class _104_二叉树的最大深度 { public int maxDepth(TreeNode root) { if (root == null) return 0; Queue<TreeNode> qu...

2019-09-22 23:12:34 161

原创 LeetCode --- 98. 验证二叉搜索树

LeetCode链接:98. 验证二叉搜索树解法1:中序遍历 - 迭代时间复杂度:O(n),空间复杂度:O(n)public class _98_验证二叉搜索树 { public boolean isValidBST(TreeNode root) { if (root == null) return true; offer(root, null, nu...

2019-09-22 18:17:28 144

原创 LeetCode --- 21. 合并两个有序链表

LeetCode链接:21. 合并两个有序链表解法1:递归public class _21_合并两个有序链表 { // 只要是用到递归,首先要搞清楚一个问题:这个递归函数的功能是什么? // 递归基:边界 public ListNode mergeTwoLists(ListNode k1, ListNode k2) { if (k1 == null) return...

2019-09-22 17:58:07 153

原创 LeetCode --- 23. 合并K个排序链表

LeetCode链接:23. 合并K个排序链表思路1 - 最笨的解法, O(nlogn), 空间复杂度:O(n)public class _23_合并K个排序链表 { public ListNode mergeKLists1(ListNode[] lists) { if (lists == null || lists.length == 0) return null;...

2019-09-22 17:51:20 143

原创 LeetCode --- 150. 逆波兰表达式求值

150.逆波兰表达式求值解法1 private boolean isOperator(String token) { return "+-*/".contains(token); } private int calculate(Integer right, Integer left, String operator) { switch (operator) { c...

2019-09-22 17:33:17 127

原创 Swift --- Optional的map和flatMap

Optional的map和flatMapvar num1: Int? = 10// Optional(20)var num2 = num1.map { $0 * 2 }var num3: Int? = nil// nilvar num4 = num3.map { $0 * 2 }var num1: Int? = 10// Optional(Optional(20))var n...

2019-09-22 17:12:52 415

原创 Swift --- Array的常规操作

Array的常规操作:var arr = [1, 2, 3, 4]// [2, 4, 6, 8]var arr2 = arr.map{ $0 * 2 }// [2, 4]var arr3 = arr.filter{ $0 % 2 == 0 }// 10var arr4 = arr.reduce(0) { $0 + $1 }// 10var arr5 = arr.reduce(0,...

2019-09-22 17:12:26 111

原创 Swift --- 字面量(Literal)

var age = 10var isRed = falsevar name = "Jack"上面代码中的10、false、"Jack"就是字面量常见的字面量的默认类型:public typealias IntegerLiteralType = Intpublic typealias FloatLiteralType = Doublepublic typealias Boole...

2019-09-20 14:52:59 480

原创 从OC到Swift - 目录

从OC到Swift(1)- Swift小知识点从OC到Swift(2)- OC和Swift相互调用从OC到Swift(3)- String和NSString从OC到Swift(4)- 协议从OC到Swift(5)- 动态性,KVC\KVO-## 从OC到Swift(6)- 关联对象从OC到Swift(7)- 资源名管理从OC到Swift(8)- 多线...

2019-09-20 09:20:15 309

原创 iOS_设置 UIButton 点击时间间隔,防止连续重复点击

//按钮第二次点击事件触发的等待时间#define Button_Seconds_Time(_seconds_) \static BOOL shouldPrevent; \if (shouldPrevent) return; \shouldPrevent = YES; \dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)((...

2019-09-18 17:04:30 1162 1

原创 Swift --- 可选链(Optional Chaining)

如果可选项为nil,调用方法、下标、属性失败,结果为nil如果可选项不为nil,调用方法、下标、属性成功,结果会被包装成可选项如果结果本来就是可选项,不会进行再次包装多个?可以链接在一起如果链中任何一个节点是nil,那么整个链就会调用失败我们回顾一下可选类型,当你要使用可选类型的时候,首先必须要对其进行解包。但是存在一个问题就是,如果对一个为nil的可选类型进行强制解包...

2019-09-18 16:59:36 275

原创 Swift --- 关键字(Any、AnyObject;is、as?、as!、as;X.self、X.Type、AnyClass)

关键字Any、AnyObjectSwift提供了两种特殊的类型:Any、AnyObjectAny:可以代表任意类型(枚举、结构体、类,也可以包括函数类型)范围更广,代表除函数外任何类型的实例。不仅包含object对象,还包含基本类型。AnyObject:可以代表任意类类型(在协议后面写上:AnyObject代表只有类能遵守这个协议)代表任何class类型的对象实例关键字is、...

2019-09-18 16:51:38 763

原创 Swift --- 模式(Pattern)

什么是模式?模式是用于匹配的规则,比如switch的case、捕捉错误的catch、if\guard\while\for语句的条件等Swift中的模式有:通配符模式(Wildcard Pattern)标识符模式(Identifier Pattern)值绑定模式(Value-Binding Pattern)元组模式(Tuple Pattern)枚举Case模式(Enu...

2019-09-18 16:38:22 445

原创 从OC到Swift(8) - 多线程

多线程开发 - 异步public typealias Task = () -> Voidpublic class Asyncs { public static func async(_ task: @escaping Task) { _async(task) } public static func async(_ task: @escaping ...

2019-09-18 14:29:57 152

原创 从OC到Swift(7) - 资源名管理

参考Android的资源名管理方法let img = UIImage(named: "logo")let btn = UIButton(type: .custom)btn.setTitle("添加", for: .normal)performSegue(withIdentifier: "login_main", sender: self)let img = UIImage(R.im...

2019-09-18 14:27:50 129

原创 从OC到Swift(6)- 关联对象

关联对象(Associated Object)在Swfit中,class依然可以使用关联对象默认情况,extension不可以增加存储属性的借助关联对象,可以实现类似extension为class增加存储属性的效果class Person {}extension Person { private static var AGE_KEY: Void? var age: I...

2019-09-18 14:24:35 207

原创 从OC到Swift(5)- 动态性,KVC\KVO

dynamic被@objc dynamic 修饰的内容会具有动态性,比如调用方法会走runtime那一套流程class Dog: NSObject { @objc dynamic func test1() {} func test2() {}}var d = Dog()d.test1()d.test2()对应汇编KVC\KVOSwift支持KVC...

2019-09-18 14:23:52 896

原创 从OC到Swift(4)- 协议

只能被class继承的协议protocol Runnable1: AnyObject {}protocol Runnable2: class{}@objc protocol Runnable3 {}被@objc修饰的协议,还可以暴露给OC去遵守实现可选协议可以通过@objc定义可选协议,这种协议只能被class遵守@objc protocol Runnable { ...

2019-09-18 14:19:06 236

原创 从OC到Swift(3)- String和NSString

StringSwift的字符串类型String,跟OC的NSString,在API设计上还是有较大差异// 空字符串var emptyStr1 = ""var emptyStr2 = String()var str: String = "1"// 拼接,jack_rosestr.append("_2")// 重载运算符 +str = str + "_3"// 重载运算符 ...

2019-09-18 14:11:05 457

原创 从OC到Swift(2)- OC和Swift相互调用

OS程序的入口在AppDelegate上面默认有一个@UIApplicationMain标记,这标识编译器自动生成入口代码(main函数代码),自动设置AppDelegate为APP的代理也可以删掉@UIApplicationMain,自定义入口代码:新建一个main.swift文件import UIKitclass MyApplication: UIApplication {}UI...

2019-09-18 14:06:18 396

原创 从OC到Swift(1)- Swift小知识点

MARK、TODO、FIXME条件编译打印系统版本检测API可用性说明

2019-09-18 14:01:31 185

原创 iOS中block的详解weakSelf、strongSelf

1我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码:那么请问:什么时候在 block 里面用 self,不需要使用 weak self?答案当 block 本身不被 self 持有,而被别的对象持有,同时不产生循环引用的时候,就不需要使用 weak self 了。最常见的代码就是 UIView 的...

2019-09-17 17:59:31 350

原创 Swift --- 错误处理(Error):throws、断言assert、fatalError

Swift中可以通过Error协议自定义运行时的错误信息enum SomeError : Error { case illegalArg(String) case outOfBounds(Int, Int) case outOfMemory}函数内部通过throw抛出自定义Error,可能会抛出Error的函数必须加上throws声明func divide...

2019-09-12 16:49:18 2690

原创 Swift --- 继承(Inheritance)

值类型(enum/struct)不支持继承,只有class支持继承没有父类的类,称为:基类Swift并没有像OC、Java那样的规定:任何类最终都要继承自某个基类子类可以重写父类的下标、方法、属性,重写必须加上override关键字内存结构:申请的内存大小必须是16字节的倍数8个字节内存信息,8个字节引用计数相关信息,再往后就是成员变量重写实例方法、下标:重写...

2019-09-12 16:40:08 180

原创 Swift --- 协议(protocol)

协议可以用来定义方法、属性、下标的声明,协议可以被枚举、结构体、类遵守(多个协议之间用逗号隔开)protocal Drawable { func draw() var x: Int { get set } var y: Int { get } subscript(index: Int) -> Int { get set }}协议中定义方法时不能有...

2019-09-12 16:36:17 256

原创 Swift --- 扩展(Extention)

Swift这种的扩展,有点类似于OC中的分类(Category)扩展可以为枚举、结构体、类、协议添加新功能可以添加方法、计算属性、下标、(便捷)初始化器、嵌套类型、协议等等扩展不能办到的事情1.不能覆盖原有的功能2.不能添加存储属性,不能向已有的属性添加属性观察器3.不能添加父类4.不能添加指定初始化器,不能添加反初始化器扩展计算属性扩展下标不能覆盖原有功能...

2019-09-12 13:56:52 596

原创 Swift --- 高级运算符

溢出运算符(Overflow Operator)Swift的算数运算符出现溢出时会抛出运行时错误Swift有溢出运算符(&+、&-、&*),用来支持溢出运算符运算符重载struct Point { var x = 0, y = 0 static func + (p1: Point, p2: Point) -> Point { ...

2019-09-12 13:35:47 192

原创 Swift --- 汇编分析(String,Array)

汇编调试常用手段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个字节/...

2019-09-12 13:28:18 1205

原创 Swift --- 泛型(Generics)和关联类型(Associated Type)

泛型可以将类型参数化,提高代码复用率,减少代码量 func swapValues<T>(_ a: inout T, _ b: inout T) { (a, b) = (b, a) } var n1 = 10 var n2 = 20 swapValue(&n1, &n2)泛型函数赋值给变量var fn:...

2019-09-12 13:21:22 2355

原创 Swift --- 初始化器相关(Initialize)

类、结构体、枚举都可以定义初始化器每个类至少有一个指定初始化器, 指定初始化器是类的主要初始化器1.类有两种初始化器:指定初始化器(designated initializer)、便捷初始化器(convenienceinitializer)2.默认初始化器总是类的指定初始化器3.类偏向于少量指定初始化器,一个类通常只有一个指定初始化器初始化器的相互调用规则:1.指定初始化...

2019-09-12 13:07:51 593

原创 Swift --- 属性(property)和输入输出参数(inout)

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

2019-09-12 12:49:41 965

空空如也

空空如也

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

TA关注的人

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