0

NSURLConnection を使用してフォーム データを非同期に POST しています。計測器を使用すると、接続の開始時にメモリ使用量が増加することがわかりますが、接続が完了すると、メモリ使用量は以前のベースラインを超えるレベルまで低下します。これを「リーク」と呼んでいます。これは、接続の開始/終了から約 60 秒後にメモリが解放され、グラフが元のベースラインに戻るためです。

なぜこの記憶が今回だけ保持されているのですか?どうすればすぐに解放できますか?

- (id)initWithPostURL:(NSURL *)url content:(NSData *)content completionBlock:(void (^)(NSData *data))completionBlock boundary:(NSString *)boundary;
{
    self = [super init];
    if (self) {        
        NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:30.0f];
        [urlRequest setHTTPMethod:@"POST"];
        [urlRequest setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary] forHTTPHeaderField:@"Content-type"];
        [urlRequest setValue:[NSString stringWithFormat:@"%d", content.length] forHTTPHeaderField:@"Content-length"];
        [urlRequest setHTTPBody:content];

        _urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:NO];
        [_urlConnection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
        [_urlConnection start];
        _data = [NSMutableData data];
        _dataSemaphore = NULL;
        _completionBlock = completionBlock;
    }
    return self;
}
4

0 に答える 0