概述
随着Xcode 11、Swift 5.0的发布,Swift目前已经实现了ABI稳定及模块稳定,并且Swift runtime
和标准库已经植入系统中,而且苹果新出文档都用Swift,Sample Code也是Swift,可以看出Swift是苹果扶持与研发的重点方向。
对于新App来说,可以直接用纯Swift进行开发,而对于老App来说,绝大部分以前都是用OC开发的,因此Swift/OC混编是一个必然面临的问题。
概述
随着Xcode 11、Swift 5.0的发布,Swift目前已经实现了ABI稳定及模块稳定,并且Swift runtime
和标准库已经植入系统中,而且苹果新出文档都用Swift,Sample Code也是Swift,可以看出Swift是苹果扶持与研发的重点方向。
对于新App来说,可以直接用纯Swift进行开发,而对于老App来说,绝大部分以前都是用OC开发的,因此Swift/OC混编是一个必然面临的问题。
「备忘录」、「提醒事项」和「日历」的功能方向和定位完全不同。
可以对应用程序性能进行的一个重要改进是减少应用程序在任何给定时间使用的虚拟内存页的数量。这组页面称为工作集,由应用程序代码和运行时数据组成。减少内存中的数据量是算法的一个功能,但是减少内存中的代码量可以通过一个称为分散加载(scatter loading)的过程来实现。这种技术也被称为改进代码引用的局部性(improving the locality of reference of your code)。
通常,方法和函数的编译代码在生成的二进制文件中按源文件组织。分散加载改变了这种组织,而是将相关的方法和函数分组在一起,而不依赖于这些方法和函数的原始位置。这个过程允许内核将活动应用程序最常被引用的可执行页保存在尽可能小的内存空间中。这不仅减少了应用程序的占用空间,还减少了这些页面被换出(paged out)的可能性。
重要提示:您通常应该等到开发周期的晚期才分散应用程序的负载。在开发过程中,代码往往会四处移动,这可能会使先前的分析结果无效。
Mach-O是OS X中二进制文件的本机可执行格式,是发布代码的首选格式。可执行格式决定二进制文件中的代码和数据读入内存的顺序。代码和数据的顺序影响内存使用和分页活动,因此直接影响程序的性能。
Mach-O二进制文件被组织成段(segments)。每个段包含一个或多个节(sections)。不同类型的代码或数据进入每个节(section)。段总是从页面边界(a page boundary)开始,但节不一定是页对齐的。段的大小是由它所包含的所有节(sections)部分的字节数来衡量的,并四舍五入到(rounded up to)下一个虚拟内存页边界。因此,一个段总是4096字节的倍数,或4千字节,4096字节是最小大小。
Mach-O可执行文件的段和节是根据它们的预期用途命名的。段名称的约定是使用全大写字母,前面加双下划线(例如,__TEXT
);section
名称的约定是使用全小写字母加双下划线(例如,__text
)。
在Mach-O可执行文件中有几个可能的段,但其中只有两个段与性能有关:__TEXT
段和__DATA
段。
Codable 本身就是个类型别名
1 | typealias Codable = Decodable & Encodable |
代表一个同时符合 Decodable
和 Encodable
协议的类型,即可解码且可编码的类型。
通过最小化启动时间,为应用创造更快速的体验。