通常情况下,
稍微查找了一下,我发现当我使用
当我使用以下代码:
编译器给了我一个警告,可以用以下方法解决:
weak
引用被用来避免应用程序对象图中的保留循环。我理解这个部分。现在我想更深入地了解它们在幕后是如何工作的。稍微查找了一下,我发现当我使用
__weak
限定符时,与该限定符相关联的变量会在自动释放池中注册,但这意味着什么?为什么要在池中注册对象?使用了什么类型的池?是主池还是其他特别创建的池?当我使用以下代码:
id _weak myWeakObj = [[NSObject alloc] init];
编译器给了我一个警告,可以用以下方法解决:
id _strong myStrongObj = [[NSObject alloc] init];
id _weak myWeakObj = myStrongObj;
因此,基于之前的问题,myStrongObj
所引用的对象会发生什么?如果可能的话,我想知道编译器的代码是什么样子的?