我试图创建一个回调,在发生故障延迟后重试该方法。我正在发出此警告:阻止将自身作为引发编译器警告的方法的参数
“在此块中强烈捕获故障块可能会导致保留周期。”
typedef void (^MyCallbackBlock)(NSObject *);
...
__block MyObject *blockSelf = self;
__block MyCallbackBlock successBlock = ^(NSObject *someObject)
{
// To be completed
};
__block MyCallbackBlock failureBlock = ^(NSObject *someObject)
{
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[blockSelf doSomething:someObject onSuccess:successBlock onFailure:failureBlock]; // <-- Warning is here
});
};
[blockSelf doSomething:someObject onSuccess:successBlock onFailure:failureBlock];
...
- (void)doSomething:(NSObject *)someObject
onSuccess:(MyCallbackBlock)successBlock
onFailure:(MyCallbackBlock)failureBlock;
问题:如何使这项工作正常进行?
(我一直在读通过其他SO问题 - 还没有找到一个匹配的是,虽然不会感到惊讶,如果一个人在那里)
这可能是答案,给它一个尝试:http://stackoverflow.com/questions/7205128/fix-warning-capturing-an-object-strongly-in-this-block-is-likely-to-导致一 – 2013-05-01 20:27:58