是否有编译器选项(或其他方式)来查看ARC插入保留和释放的位置?这主要是出于好奇.我可以在反汇编代码中看到它们,但有时候很难通过.
通常,weak引用用于避免应用程序对象图中的保留周期.我明白那一部分.现在我想更进一步,了解它们是如何在引擎盖下工作的.
搜索一下,我读过当我使用__weak限定符时,与该限定符关联的变量在自动释放池中注册,但这是什么意思?为什么对象在池中注册?使用什么类型的游泳池?它是主池还是其他一些特制的?
当我使用这段代码时:
id _weak myWeakObj = [[NSObject alloc] init];
Run Code Online (Sandbox Code Playgroud)
编译器给了我一个警告,我可以修复:
id _strong myStrongObj = [[NSObject alloc] init];
id _weak myWeakObj = myStrongObj;
Run Code Online (Sandbox Code Playgroud)
那么,基于前一个问题,引用的对象会发生什么myStrongObj?如果可能的话,我想知道编译器的代码是什么样的?
memory-management weak-references objective-c automatic-ref-counting