检查以下代码,并假设它是在 ARC 下编译的:
-(无效)富{ NSOperationQueue *oq = [[NSOperationQueue alloc] init]; [oq addOperationWithBlock:^{ // 假设我们在这里有一个长时间运行的操作。 }]; }
尽管操作队列被声明为局部变量,但只要它有正在运行的操作,它的生命周期就会超出方法的范围。
这是如何实现的?
更新:
我很欣赏 Rob Mayoff 深思熟虑的评论,但我认为我没有正确地提出我的问题。我不是在问关于 NSOperationQueue 的具体问题,而是关于 ARC 中对象生命周期的一般问题。具体来说,我的问题是:
在 ARC 下,对象如何参与对其自身生命周期的管理?
我做了很长一段时间的程序员,我很清楚这种事情的陷阱。我不希望被告知这是一个好主意还是坏主意。我认为总的来说这是一个坏的。相反,我的问题是学术性的:无论这是一个好主意还是坏主意,如何在 ARC 中做到这一点,这样做的具体语法是什么?