获取ARC警告以强烈捕获ojbect

3 iphone cocoa-touch memory-management objective-c automatic-ref-counting

我正在使用ARC并收到警告说 Capturing 'request' strongly in this block is likely to a retain cycle.

__block ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:url];
[request setCompletionBlock:^{
        NSString *responseString = [request responseString];
        self.appointmentArray = [responseString JSONValue];
    }];
    [request setFailedBlock:^{
        NSError *error = [request error];
        NSLog(@"%@", error.description);
    }];
Run Code Online (Sandbox Code Playgroud)

Sör*_*lau 9

我假设request在块之前的某个地方被宣布.您需要将其声明为__weak,或者为其设置第二个弱声明变量.

这个问题很相似.试试这个:

__block ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:url];
__weak ASIHTTPRequest *request_b = request;
[request setCompletionBlock:^{
    NSString *responseString = [request_b responseString];
    self.appointmentArray = [responseString JSONValue];
}];
[request setFailedBlock:^{
    NSError *error = [request_b error];
    NSLog(@"%@", error.description);
}];
Run Code Online (Sandbox Code Playgroud)


Alm*_*g C 6

简单地替换:
__block ASIFormDataRequest*request = [[ASIFormDataRequest alloc] initWithURL:url];

用:
__weak ASIFormDataRequest*请求= [[ASIFormDataRequest的alloc] initWithURL:URL];

就足够了.