Ios 在完成块中访问super的正确方法
我有一个子类NSOperation,它通过网络发送取消请求。 仅当请求成功时,我才想取消操作: // overrider cancel of NSOperation -(void)cancel{ [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { [super cancel]; }]; } //NSO操作的重写器取消 -(作废)取消{ [NSURLConnection sendAsynchronousRequest:请求 队列:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse*响应,NSData*数据,NSError*错误){ [超级取消]; }]; }Ios 在完成块中访问super的正确方法,ios,objective-c,automatic-ref-counting,objective-c-blocks,retain-cycle,Ios,Objective C,Automatic Ref Counting,Objective C Blocks,Retain Cycle,我有一个子类NSOperation,它通过网络发送取消请求。 仅当请求成功时,我才想取消操作: // overrider cancel of NSOperation -(void)cancel{ [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue]
这会导致任何保留周期或其他问题吗?我是否需要弱超级(我正在使用ARC)它不会创建保留循环,您的实例没有对完成块的强引用。但是,我不希望像这样调用
super
实现,可能是这样的
-(void)cancelAfterRequest
{
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
[self cancel];
}];
}