2011-03-07 34 views
1

嗨我想解析一个XML并使用代码内的currentElementValue来得到一个expired。这是代码。NSXMLParser(iPhone)中的内存问题

if([elementName isEqualToString:@"utlop"]) { 
    NSDate *now = [NSDate dateWithTimeIntervalSinceNow:0]; 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateStyle:NSDateFormatterShortStyle]; 
    int numberOfDays = [currentElementValue intValue]; 
    NSDate *expireDate = [now addTimeInterval:60*60*24*numberOfDays]; 
    NSString *expireString = [dateFormat stringFromDate:expireDate]; 
    NSLog(@"ExpiryString :%@", expireString); 



    //Add values to Vare 
    enVare.utlop = expireString; 
    enVare.enhet = enhet; 
    enVare.isDirty = NO; 

    //Add Vare 
    [appDelegate addVare:enVare]; 


    //Releasing 
    [dateFormat release]; 
    [enVare release]; 
    enVare = nil; 
    [currentElementValue release]; 
    currentElementValue = nil; 
    [expireString release]; 
    expireString = nil; 

这导致内存泄漏,但进出口新的目标C,所以我找不到错误。当我这样做时,它可以工作:

enVare.utlop = currentElementValue; 

回答

0

不要释放不属于您的对象。当你使用newalloc创建对象时,你拥有一个对象。只发布使用这些函数创建的那些对象。还要确保在完成使用后释放这些对象。

+0

但我已经分配了enVare和currentElementValue以及代码。这就是为什么这个工程:enVare.utlop = currentElementValue; 当我这样做时没有问题。 – Leif 2011-03-07 08:39:11

+0

如果你想找到泄漏的细节请参考构建和分析项目。你可以说分析项目后在哪一行发生泄漏 – visakh7 2011-03-07 08:42:52

+0

expireString应该不需要释放,因为你没有分配或保留它。 – Wex 2011-03-07 21:55:56