私は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を除いて)で作成したので、これを求めています。オブジェクトを解放する責任がある人も私です。ありがとう!
あなたがそれを必要とするなら、あなたはそれをキャンセルすることができるようにそれを参照することもできます。 –