2011-03-07 33 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