排序:
默认
按更新时间
按访问量

Swift 4.0 Codable 序列化

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

2018-09-21 14:39:35

阅读数:25

评论数:0

OC的自省

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

2018-09-16 21:07:32

阅读数:20

评论数:0

Swift —— protocol的动态特性

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

2018-09-16 20:58:07

阅读数:14

评论数:0

Swift — struct与class的差异

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

2018-09-10 14:22:14

阅读数:24

评论数:0

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

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

2018-09-06 23:14:33

阅读数:15

评论数:0

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

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

2018-09-06 22:45:16

阅读数:8

评论数:0

iOS DZNEmptyDataSet源码解析

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

2018-08-27 11:52:32

阅读数:57

评论数:0

Swift 中如何理解copy-on-write

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

2018-08-09 23:12:18

阅读数:57

评论数:0

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

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

2018-08-09 22:50:27

阅读数:117

评论数:0

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

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

2018-07-27 10:16:17

阅读数:2904

评论数:4

iOS AFN网络请求报错: Invalid parameter not satisfying: URLString

string = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\&q...

2018-07-26 17:27:21

阅读数:33

评论数:0

CocoaPods安装报错:gem install cocoapods ERROR: While executing gem ... (Gem::FilePermissionError)

在cocoapods 执行 sudo gem install cocoapods的时候出现  While executing gem ... (Gem::FilePermissionError)    You don't have write permissions for the /usr/bi...

2018-06-26 23:24:29

阅读数:60

评论数:0

iOS assign与weak的区别

相同点:两者都是弱引用声明类型;不同点:weak声明的变量在栈中就会自动清空,赋值为nil;  assign声明的变量在栈中可能不会自动赋值为nil,就会造成野指针错误注意: 在MRC下,使用delegate时使用assign,ARC时用assign需要手动释放,建议用weak更安全。不管是MRC...

2018-06-20 14:40:16

阅读数:27

评论数:0

GCD dispatch_sync同步引起死锁的问题

截图中可以看到程序运行到主线程同步执行时出现崩溃,下面来分析一下崩溃原因:首先了解一下dispatch_sync:第一个参数 queue 为队列对象,第二个参数block为block对象。这个接口是同步将block扔到队列queue中去执行,即扔了我就等着,等到queue排队把这个block执行完...

2018-06-14 18:18:54

阅读数:26

评论数:0

Swift 部分控制器隐藏状态栏

方法一:第一步:找到info.plist文件,添加字段 View controller-based status bar appearance 为 NO;第二部:在目标控制器视图即将出现方法中添加代码 UIApplication.shared.setStatusBarHidden(true, wi...

2018-06-14 15:32:24

阅读数:176

评论数:0

Swift 4.0 GCD 倒计时按钮

override func viewDidLoad() { super.viewDidLoad() //写一个按钮 btn.frame.size = CGSize(width: 100, height: 50) btn.center ...

2018-06-14 11:13:12

阅读数:318

评论数:0

Swift 属性关键字

private:声明为私有的实体只能在其声明的范围内被访问;fileprivate:文件内私有,超出当前文件不能访问;internal:默认访问级别,internal可以不写,整个模块都可以访问;public:使用public修饰的类,属性或方法,可以被任何类访问,但在其他的module中不可以被...

2018-06-06 15:52:12

阅读数:41

评论数:0

Swift @escaping @ noescaping 逃逸闭包与非逃逸闭包

闭包只有在函数中做参数时才会区分逃逸闭包和非逃逸闭包。Swift 3.0之后,传递闭包到函数中的时候,系统会默认为非逃逸闭包类型(NonescapingClosures)@noescaping,逃逸闭包在闭包前要添加@escaping关键字。从生命周期看两者区别:非逃逸闭包的生命周期与函数相同:1...

2018-05-30 23:26:57

阅读数:212

评论数:2

Swift map、flatMap、compactMap、filer、reduce的使用总结

Swift 提供了map、flatMap、compactMap、filer、reduce这几个高阶函数支持。1,map : 可以对数组中的每一个元素做一次处理// 计算字符串的长度 let stringArray = ["Objective-C", &q...

2018-05-29 17:22:50

阅读数:451

评论数:0

Swift 面向协议编程之协议扩展

协议的命名遵循Swift的标准库,即协议名以“Type”,"-able","-ible"结尾。例如 SequenceType,GeneratorType,CustomStringCoveeertible,  -type定义行为...

2018-05-28 18:39:21

阅读数:44

评论数:0

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