2

我有一個NSOperation的子類,它通過網絡發送取消請求。 我想取消操作只有在請求成功:在完成塊中訪問超級的正確方法

 

// overrider cancel of NSOperation 
-(void)cancel{ 
[NSURLConnection sendAsynchronousRequest:request 
             queue:[NSOperationQueue mainQueue] 
          completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
     [super cancel]; 
    }]; 
} 

這會不會造成任何保留週期還是什麼?我需要一個弱超級(我正在使用ARC)

回答

3

它不會創建一個保留週期,您的實例不具有完成塊的強引用。不過,我不希望這樣的super執行,也許這樣的事情

-(void)cancelAfterRequest 
{ 
    [NSURLConnection sendAsynchronousRequest:request 
             queue:[NSOperationQueue mainQueue] 
          completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
     [self cancel]; 
    }]; 
} 
+0

這工作。謝謝 –