2

GCDを使用する次のコードにリークがあります。注:私はARCを使用していません。リークは正確に

__block NSMutableArray *newImages = [NSMutableArray new];

dispatch_async(serialQueue, ^{

    for (NSDictionary *imageData in results) {

        NSURL *url = [NSURL URLWithString:[imageData objectForKey:@"url"]];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];

        NSError *error = nil;
        NSHTTPURLResponse *response = nil;
        NSData *imageData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

        if (error == nil && imageData != nil && response.statusCode == 200) {
            UIImage *image = [UIImage imageWithData:imageData];
            [newImages addObject:image];
        }

        else {
            self.errorLabel.text = @"An error has occured downloading some images.";
            [self.spinner stopAnimating];
        }
    }
});

楽器によると、私は次の場所で漏れています[newImages addObject:image];。なぜこれが漏れているのですか?newImages上記のように自動解放されたオブジェクトです。

4

1 に答える 1

7

newImages自動リリースされません。new所有する参照を返します-これは。と同等[[SomeClass alloc] init]です。

于 2012-10-02T19:10:40.143 に答える