我仍然不是 100% 了解 ARC 内部结构。
我想澄清几个例子:
someObjectToReturn = [[SomeClass alloc] init];
在方法内部分配并返回会发生什么?如果someObjectToReturn
分配给例如 someObject,那么 someObjectToReturn 什么时候会被释放?当 someObject 被取消或 someObjectToReturn 仍需要添加到自动释放池时?
另一种情况是如果一个对象数组被清零,是否所有的对象都被释放了?
最后,哪里是释放复制的块对象的好地方?还是执行后块仍然会被释放?如果将复制的块添加到自动释放池中,什么时候会耗尽该池?假设有 10 个块,每个块都添加到自动释放池中,过早将其耗尽会导致正在执行的块死亡。复制的块是否可以从自身内部取消,例如将块的取消分派回主线程?