我有一个工作的应用程序,我正在把它转换成Xcode 4.2中的ARC。预检查警告之一涉及在块中强烈捕获self,从而导致保留循环。我做了一个简单的代码示例来说明这个问题。我相信我理解这意味着什么,但我不确定实现这类场景的“正确”或推荐方法。
self是MyAPI类的实例 下面的代码经过简化,只显示与我的问题相关的对象和块的交互 假设MyAPI从远程数据源获取数据,MyDataProcessor处理该数据并产生输出 处理器配置了块来通信进程和状态
代码示例:
// code sample
self.delegate = aDelegate;
self.dataProcessor = [[MyDataProcessor alloc] init];
self.dataProcessor.progress = ^(CGFloat percentComplete) {
[self.delegate myAPI:self isProcessingWithProgress:percentComplete];
};
self.dataProcessor.completion = ^{
[self.delegate myAPIDidFinish:self];
self.dataProcessor = nil;
};
// start the processor - processing happens asynchronously and the processor is released in the completion block
[self.dataProcessor startProcessing];
问题:我做了什么“错误”和/或这应该如何修改,以符合ARC公约?