2011-09-14 124 views
0

我已经在函数内部分配了对象[Method。]内存管理问题

里面的解析器方法。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
    attributes:(NSDictionary *)attributeDict{ 

    Information *aInfo = [[Information alloc] init]; 

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

     aInfo.strStoreId = [attributeDict valueForKey:@"storeid"]; 
     [arrayList addObject:aInfo]; 
    } else if ([ActionType isEqualToString:@"action"]) { 

     if([elementName isEqualToString:@"data"]) { 
      aInfo.strStoreId = [attributeDict valueForKey:@"storeid"]; 
      [arrayList addObject:aInfo]; 
     } 

    } 
} 

在这种情况下,如何管理内存问题?

+1

它不是真的很清楚你问这里。 –

回答

6

[aInfo release];[aInfo autorelease];在方法

2

可以只释放该对象的端部,将其添加到阵列增加了保留计数。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
    namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
    attributes:(NSDictionary *)attributeDict{ 

    Information *aInfo = [[Information alloc] init]; 

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

     aInfo.strStoreId = [attributeDict valueForKey:@"storeid"]; 
     [arrayList addObject:aInfo]; 
    } else if ([ActionType isEqualToString:@"action"]) { 

     if([elementName isEqualToString:@"data"]) { 
      aInfo.strStoreId = [attributeDict valueForKey:@"storeid"]; 
      [arrayList addObject:aInfo]; 
     } 

    } 

    [aInfo release], aInfo = nil; 
} 
1

你也必须定义aInfo变量作为类变量并释放它在以下方法的可能性:

– parser:didEndElement:namespaceURI:qualifiedName: