最早计算机在设计时采用8个比特bit作为一个字节byte。所以一个字节最大的整数就是255。0~255被用来表示大小写英文字母,数字和一些符号,这些编码成为ASCII编码。例如大写字母A的编码就是25,小写z的编码就是122.
THE IMPLICITLY UNWRAPPED OPTIONAL & WHEN TO USE IT
表现和值一样,唯一的不同就是等于向编译器承诺在运行时的时候一定会有值。最常见的使用场景就是IBOutlet的时候,我们可以确保在编译的时候有值,但是如果用optional就得到处检查IBOutlet检查的值,就会显得非常繁琐,所有可以解决这个问题。
UTF-8
UTF-8可以与之前的码兼容,但是遇到比7bits更大的编码UTF-8是怎么处理的? 例如符号 ½,在UTF-8中的编码是101111101,使用了8bits这时候在UTF-8中就需要两个字节来存储。 当需要更高位的时候,则可以用下面的表格来推算他。
Block系列2-block auto和static值捕获源码分析
编译以后可以看到Block被转换成了如下代码其中应该就是block的实现 中第一个参数是一个的结构体,而第一个参数是isa指针,所以Block的本质就是一个封装了运行环境的OC对象。
Introducing Protocol-Oriented Programming in Swift 3
Ray Wenderlich原文加笔记,该文讲述了Swift协议的继承,协议的默认实现,默认方法的重写,协议的扩展等新的属性。 Swift中基本具备了的特性。允许继承、扩展等。
Autorelease系列1- Autorelease的本质
深入解析 iOS 运行时内存管理机制,探讨 Autorelease 底层实现原理与核心设计。
Block系列1-block的本质
weak与源码编译问题解决 根据block存放的位置不同,block分为不同的类型。 block有三种类型,可以通过调用class方法或者isa指针来查看具体类型,最终都是继承自NSblock类型。 我们在分析block拷贝的时候,可以把block当作是变量。
Block系列3-block __block修饰符值捕获源码分析
在加上block以后,age的值被包装成了的对象,而且后续的访问也都是通过对象来访问里面的值 Block系列1-block的本质 Block系列2-block auto和static值捕获源码分析 Block系列3-block __block修饰符值捕获源码分析[当前]
Setter和Getter原理
当我们在@property上加上strong和copy关键字以后,编译器都为我们做了什么? 可以看到我们在使用点语法的时候,最终是生成了相应的set方法和,找到这两个方法的实现,给所有参数都申请了和方法。而最终调用的是方法。
GCD Block循环引用问题
问题:GCD为什么不会导致循环引用 这个问题得分开回答,同步和异步线程 dispatchsync苹果官方是这么写的 As a performance optimization, this function executes blocks on the current t...