[英]Do I need to release object using delegate?
沒有ARC,我有一個任務要做。 以前我沒有使用過(最近開始研究ios開發)。 我有一個代表http請求的類,它符合NSURLSessionDownloadDelegate協議。 而且我有以下代碼:
-(void)executeWithRelativeUrl:(NSString *)relativeUrl andSuccessBlock: (void(^) (NSData*))successBlock {
NSURL *url = [[NSURL alloc] initWithString:relativeUrl relativeToURL:self.baseUrl];
[self setSuccessBlock:successBlock];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:nil];
NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithRequest:request];
[downloadTask resume];
[request release];
[url release];
}
創建url會話並開始下載任務。 我正在通過以下方法處理任務結果:
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location {
NSData *data = [NSData dataWithContentsOfURL:location];
dispatch_async(dispatch_get_main_queue(), ^{
self.successBlock(data);
});
}
現在的問題是:我是否需要在最后一種方法的末尾釋放會話,下載任務和位置url? 還是會為我完成? 我問這個問題是因為我是在第一種方法中創建的(URL除外),據我了解,負責釋放對象的人也是我。 謝謝!
黃金法則很簡單。 您是說alloc
還是copy
或retain
? 沒有? 然后,您無需說release
(也不必這樣做)。
(由於這個原因,您需要釋放url
和request
,並且您正在這樣做。因此,內存管理現已完成。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.