前言
以前想获取应用的 .ipa
文件可以从 iTunes
下载,macOS
上的 iTunes
升级成 12.7
后,无法再获得 .ipa
文件, 而iOS 9
后就不能从 iTools
之类的辅助工具中导出 .ipa
文件。
后面 Apple
官网又提供了一个 12.6.3 的链接
出于好奇心,想试试直接导出.ipa
文件,并重签名安装到未越狱的设备上。
以前想获取应用的 .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
。
Update your browser to view this website correctly. Update my browser now