前言: Web代理服务器
来自参考链接2
对客户端/浏览器来说Web
代理服务器是服务器
对服务器来说Web
代理服务器是客户端
《编译原理》中提到
编译器的第一个步骤是词法分析(Lexical Analysis)或扫描。词法分析器读入组成源程序的字符流,并且将它们组织成为有意义的词素(lexeme)的序列。对于每个词素,词法分析产生如下形式的词法单元(token)作为输出:
<token-name,attribute-value>
token-name
是一个语法分析步骤要使用的抽象符号attribute-value
指向符号表中关于这个词法单元的条目
1 | int main(){ |
以前想获取应用的 .ipa
文件可以从 iTunes
下载,macOS
上的 iTunes
升级成 12.7
后,无法再获得 .ipa
文件, 而iOS 9
后就不能从 iTools
之类的辅助工具中导出 .ipa
文件。
后面 Apple
官网又提供了一个 12.6.3 的链接
出于好奇心,想试试直接导出.ipa
文件,并重签名安装到未越狱的设备上。
在上一篇中简单分析了 Weak
属性是如何被存储,获取和销毁的,其中的 SideTable
结构体当做黑盒进行处理。本文尝试对 SideTable
的结构进行一些分析。
1 | struct SideTable { |
SideTable
主要分为 3
部分
weak_table_t
: weak
引用的全局 hash
表RefcountMap
: 引用计数的 hash
表slock
: 保证原子操作的自旋锁
OC
中的 weak
属性是怎么实现的,为什么在对象释放后会自动变成 nil?本文对这个问题进行了一点探讨。
mac OS Sierra 10.12.4
objc709
搜索后发现runtime 如何实现 weak 属性给出了一个参考答案。
runtime
对注册的类, 会进行布局,对于weak
对象会放入一个hash
表中。 用weak
指向的对象内存地址作为key
,当此对象的引用计数为0
的时候会dealloc
,假如weak
指向的对象内存地址是a
,那么就会以a
为键, 在这个weak
表中搜索,找到所有以a
为键的weak
对象,从而设置为nil
。