Swift 检测跳转到百度、高德地图进行路线规划功能

直接上代码吧,功能比较简单,写出来只是方便查找。 //地图类型 enum MapForm { enum MapURI:String { //百度 case baiduMap = "baidumap://" ...

2019-01-24 21:44:28

阅读数 20

评论数 0

iOS -- CellForRow和HeightForRow的调用顺序

iOS 10.3.2系统先走的HeightForRow然后再走的CellForRow方法,iOS 11系统先加载的cell然后计算的Height,这两个方法运行顺序的不同会给程序带来不一样的效果。 翻阅了几篇文章发现,不止iOS10.3.2有如此问题,整个iOS10及以下系统这两个方法的调用顺序...

2019-01-09 10:15:17

阅读数 21

评论数 0

Swift 高德地图自定义大头针自定义气泡

自定义大头针和自定义气泡的代码官方文档上都写的很详细,我这里不再记录,这篇主要记录的是自定义气泡上面有一个按钮,点击按钮响应对应事件的场景,效果如下: 上面的车是自定义的大头针,点击大头针弹出自定义气泡。 自定义一个View先: class CCPOICallOutView: UIVi...

2019-01-02 22:16:01

阅读数 28

评论数 1

SourceTree回退撤销上次提交commit

不小心commit了一个有问题的文件,想退到commit前的状态。 选中提交之前的状态鼠标右键点击,选择“Reset master to this commit”, 在跳出的弹框中有三个选项: Soft -keep all local changes 混合合并-保持工作副本并重置索引   ...

2018-12-20 17:26:58

阅读数 98

评论数 0

iOS — block捕获自动变量的值

int val = 10; void (^blk)(void) = ^{printf("val=%d\n",val);}; val = 2; blk(); 上面这段代码输出值是:val = 10,而不是2,block截获自动变量的瞬时值。因为block保存了...

2018-10-15 17:23:08

阅读数 29

评论数 0

iOS 一个HTTPS连接的客户端与服务端交互过程

在一个HTTPS连接的网络中,输入账号和密码并单击登陆按钮后,到服务器返回这个请求前,这期间经历了什么? 答:具体经历了一下8步: 客户端打包请求。其中包括URL、端口、账号和密码等。使用账号和密码登陆应该用的是POST方式,所以相关的用户信息会被加载到body中。这个请求应该包含3个方面:网...

2018-09-26 21:43:32

阅读数 163

评论数 0

Swift 4.0 Codable 序列化

如果要将一个对象持久化,需要把这个对象序列化。过去的做法是实现NSCoding协议,但实现NSCoding协议的代码写起来很繁琐,尤其是当属性非常多的时候。 Swift 4中引入了Codable协议,可以大大减轻了我们的工作量。我们只需要让需要序列化的对象符合Codable协议即可,不用再写任何...

2018-09-21 14:39:35

阅读数 120

评论数 0

iOS 对象的归档和反归档(序列化)

在iOS中,对象的序列化和反序列化分别使用NSKeyedArchiver和NSKeyedUnarchiver两个类,我们可以把一个类对象进行序列化然后保存到文件中,使用时再读取文件,把内容反序列化出来。这个过程通常也被称为对象的编码(归档)和解码(解档)。 需要注意的是,NSKeyedArchi...

2018-09-19 11:10:17

阅读数 104

评论数 0

OC的自省

自省在OC中就是:判断一个对象是否属于某个类的操作。它有一下两种形式: [obj iskindOfClass:[SomeClass class]]; [obj isMemberOfClass:[SomeClass class]]; 在上面的代码中,第一行代码中的isKinOffClass...

2018-09-16 21:07:32

阅读数 31

评论数 0

Swift —— protocol的动态特性

protocolChef { func makeFood() } extension Chef { func makeFood() { print("Make Food") } } struct SeafoodC...

2018-09-16 20:58:07

阅读数 28

评论数 0

Swift — struct与class的差异

内存分配 内存分配分为栈内存分配和堆内存分配两种 栈内存的存储结构比较简单,你可以简单的理解为push到栈底pop出来这么简单,而要做的就是通过移动栈针来分配和销毁内存 堆内存相比栈有着更为复杂的存储结构,他的分配方式你可以理解为在堆中寻找合适大小的空闲内存块来分配内存,把内存块重新插入堆来...

2018-09-10 14:22:14

阅读数 59

评论数 0

Swift — 数据源中的同构和异构

对于Swift的集合数据来说,有同构和异构之分。如果你需要讨论一群鸟类或者一批飞机,那么这样的数据是同构的,比如包含鸟类的数组[Bird]和包含飞机的数组[Airplane]。有时你想要探讨的是这些空中家伙们的共性:飞翔,因此你的数据源可能同时包含Bird和Airplane,这样的是剧院叫做异构数...

2018-09-06 23:14:33

阅读数 54

评论数 0

Swift — 关键字try、try?、try! 和defer

try:和可选类型相似,编译器强制我们在使用可能跑出错误的房时使用try关键字。 try?:有点类似于可选型中的可选链,如果方法正确,则完整执行;如果跑出错误,则方法提前结束,但不会抛出错误进行处理。 try!:类似于可选型中的强制解包,同样不会对错误进行处理,但是一旦方法抛出错误,就会造成程...

2018-09-06 22:45:16

阅读数 50

评论数 0

iOS DZNEmptyDataSet源码解析

DZNEmptyDataSet是一个无数据时的空白页展示框架,支持自定义文字和图片,用起来很方便。最近研究了一下它的源代码,学习到了很多编程上的技巧。 基本用法以UITableView为例,UITableView只需要遵循DZNEmptyDataSet的代理方法,代理方法设置空白页显示文字和图片...

2018-08-27 11:52:32

阅读数 114

评论数 0

iOS Swizzle的正确使用方式(原文翻译)

文章翻译自https://blog.newrelic.com/engineering/right-way-to-swizzle/    感谢作者Bryce Buchanan 通常在运行时,Swizzle是通过用一个方法的实现来替换另一个方法的实现来运作的。运用Swizzle可能是因为不同的需求...

2018-08-25 16:41:24

阅读数 106

评论数 0

iOS objectForKey与valueForKey的区别

objectForKey: returns the value associated with aKey, or nil if no value is associated with aKey. 返回指定 key 的 value,若没有这个 key 返回 nil. valueForKey: re...

2018-08-22 14:44:54

阅读数 178

评论数 0

iOS _cmd的意义

在Apple的官方介绍里看到轻描淡写的说了一句:“The _cmd variable is a hidden argument passed to every method that is the current selector”,其实说的就是_cmd在Objective-C的方法中表示当前方法...

2018-08-21 11:34:51

阅读数 78

评论数 0

Swift 中如何理解copy-on-write

当值类型(如struct)在复制时,复制的对象和元、原对象实际上在内存中指向同一个对象。当且仅当修改复制后的对象时,才会在内存中重新创建一个新的对象。举例: //arrayA是一个数组,为值类型 let arrayA = [1,2,3] //arrayB这个时候与arrayA在内存中是同一个...

2018-08-09 23:12:18

阅读数 124

评论数 0

iOS--assign修饰对象类型会怎样?

首先我们需要明确,对象的内存一般被分配到堆上,基本数据类型和oc数据类型一本被分配在栈上。 如果用assign修饰对象,当对象释放后(因为不存在强引用,离开作用域对象内存可能被回收),指针的地址还是存在的,也就是说指针并没有被置为nil,下次再访问该对象就会造成野指针异常。对象是分配在堆上的,堆...

2018-08-09 22:50:27

阅读数 456

评论数 0

MacBookPro 连接无线显示“密码无效”

当你确定输入的密码是正确的,却提示你密码无效,试了几次都不行的时候,把电脑上的USB端口上的设备都拔掉试试,USB3.0设备会影响wifi连接。

2018-07-27 10:16:17

阅读数 6826

评论数 4

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