2011-09-14 21 views
0

関数内にオブジェクトを割り当てました[メソッド。]メモリ管理の問題

パーサメソッド内です。

- (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]; は、保持カウントを増加させました。

- (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; 
} 
2

あなただけのオブジェクトを解放することができますの終わりに

1

また、クラス変数としてaInfo変数を定義し、次のような方法でそれを解放する可能性があります。

– parser:didEndElement:namespaceURI:qualifiedName: