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