0

以下は私のコードです。Leaks は、NSMutableString alloc メソッドの周りでメモリ リークが発生していると言っています。それは私が単に見落としているだけだと確信しています。誰か考えがあれば教えてください。ありがとう!


-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{

    if (!currentValue) {
        currentValue = [[NSMutableString alloc] initWithCapacity:[string length]];
    }

    [currentValue setString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];

}

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{

    if([elementName isEqualToString:@"phone"]){

      currentAgent.phone = currentValue;
    }

    [currentValue release];

    currentValue = nil;

}

-Agent は、クラスの初期化時に作成されたカスタム オブジェクトです。XML は有効で、適切な開始/終了タグがすべて含まれています。

4

1 に答える 1

1

このコードを見ると、Agent クラスが電話を漏らしている可能性が高いと思います。エージェントがretainphone プロパティを使用すると仮定すると、これにより、電話が必要以上に長く持続することになります。

オブジェクトの作成者は、余分な保持が別の場所にある場合でも、リークで「信用」されます。

つまり、エージェントでは次のようになります。

- (void)dealloc {
    self.phone = nil;
    // anything else you need to do
    [super dealloc];
}
于 2010-11-08T22:39:44.393 に答える