我有一个NSOperation的子类,它通过网络发送取消请求。 我想仅在请求成功时才取消操作:
// overrider cancel of NSOperation -(void)cancel{ [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { [super cancel]; }]; }
这会导致任何保留周期吗?我需要一个弱的超级(我正在使用ARC)
答案 0 :(得分:3)
它不会创建保留周期,您的实例不会保留对完成块的强引用。但是,我不希望像这样调用super
实现,可能是这样的
-(void)cancelAfterRequest
{
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
[self cancel];
}];
}