NSXMLParser(iPhone)中的内存问题
问题描述:
嗨我想解析一个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;
答
不要释放不属于您的对象。当你使用new
或alloc
创建对象时,你拥有一个对象。只发布使用这些函数创建的那些对象。还要确保在完成使用后释放这些对象。
但我已经分配了enVare和currentElementValue以及代码。这就是为什么这个工程:enVare.utlop = currentElementValue; 当我这样做时没有问题。 – Leif 2011-03-07 08:39:11
如果你想找到泄漏的细节请参考构建和分析项目。你可以说分析项目后在哪一行发生泄漏 – visakh7 2011-03-07 08:42:52
expireString应该不需要释放,因为你没有分配或保留它。 – Wex 2011-03-07 21:55:56