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,您可以避免所有尝试调用 release
或 autorelease
或 retain
。 ARC 会在完成后正确释放添加的操作。
只要您使用的是 ARC,您在问题中发布的代码在内存管理方面就没问题。由于您在尝试调用 release
时遇到错误,这意味着您正在使用 ARC。
我创建了 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,您可以避免所有尝试调用 release
或 autorelease
或 retain
。 ARC 会在完成后正确释放添加的操作。
只要您使用的是 ARC,您在问题中发布的代码在内存管理方面就没问题。由于您在尝试调用 release
时遇到错误,这意味着您正在使用 ARC。