0

添付の画像をご覧ください。ここに表示されていない場合はコードです

- (void)startParsingData:(NSString *)xmlDataString
{
    NSLog(@"parser started");
    // allocate NSXMLParser
    NSLog(@"XML DATA equals %@", xmlDataString);
    NSData* xmlData=[xmlDataString dataUsingEncoding:NSUTF8StringEncoding];
    dataParser = [[NSXMLParser alloc] initWithData:xmlData];
    // assign delegate to parser
    dataParser.delegate = self;
    // parse data
    [dataParser parse];
    // release parser
    [dataParser release];
    // release data
    //[xmlData release];
}

アクティビティモニターは、次の行にリークがあることを示しています-

[dataParser parse];

理解できない。なんで?私がそのオブジェクトをリリースしたので。

編集 :

メソッドを-に変更しました

- (void)startParsingData:(NSString *)xmlDataString
{
    NSLog(@"parser started");
    // allocate NSXMLParser
    NSLog(@"XML DATA equals %@", xmlDataString);
    NSData* xmlData=[xmlDataString dataUsingEncoding:NSUTF8StringEncoding];
    [[NSURLCache sharedURLCache] setMemoryCapacity:0];
    [[NSURLCache sharedURLCache] setDiskCapacity:0];
    dataParser = [[NSXMLParser alloc] initWithData:xmlData];
    // assign delegate to parser
    dataParser.delegate = self;
    // parse data
    [dataParser parse];
    // release parser
    [dataParser release];
    // release data
    //[xmlData release];
}

それでもリークはあります。

ここに画像の説明を入力してください

4

1 に答える 1

1

使用してみてください:

[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
dataParser = [[NSXMLParser alloc] initWithContentsOfURL:URL];

これらの質問に関する人々のリークを止めるようです:

SeismicXMLの例と同じNSXMLParserを使用すると、メモリリークの問題が発生しました

このObjective-CNSXMLParserコードでリークが見つかりませんか?

于 2012-08-16T09:41:56.560 に答える