NSInvocationOperation 对象释放

NSInvocationOperation object release

我创建了 NSInvocationOperationQueue 对象,然后将其添加到我的 NSOperationQueue 实例中。

operationQueue = [NSOperationQueue new];

NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(counterTask) object:nil];

[operationQueue addOperation:operation];

operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(colorRotatorTask) object:nil];
[operationQueue addOperation:operation];

有效,但我有疑问。这个 post 告诉我每个操作都应该被释放,但是我的没有释放仍然有效,如果我释放它会给我错误。如果我不释放,会不会有副作用或者会发生什么?还是我漏掉了什么步骤导致无法发布?

如有任何帮助,我们将不胜感激。谢谢。

请注意,在您提供的 link 中创建的项目未使用自动引用计数 (ARC)。

没有理由不在任何新项目中使用 ARC。使用 ARC,您可以避免所有尝试调用 releaseautoreleaseretain。 ARC 会在完成后正确释放添加的操作。

只要您使用的是 ARC,您在问题中发布的代码在内存管理方面就没问题。由于您在尝试调用 release 时遇到错误,这意味着您正在使用 ARC。