Еще одна утечка сообщения NSMutableDictionary

Я часами бился головой о монитор (и читал похожие сообщения). Я все еще в тупике.

Я объявляю массив в моем * .h файле, который будет отображать данные в виде таблицы:

@interface TeamsTableViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> 
{
    NSMutableArray *teamsArray;
}

Я выделяю массив в -viewDidLoad и освобождаю его в dealloc:

-(void)viewDidLoad 
{
    [super viewDidLoad];

    // Inititalize the mutablearray that will store the xml for the table.
    teamsArray = [[NSMutableArray alloc] init];
}

-(void)dealloc 
{
    [teamsArray release];

    [super dealloc];
}

Каждый раз -viewWillAppear я вызываю свой loadData для перезагрузки данных (поскольку данные могут измениться ). Для этого поста (и пока я пытаюсь найти свою утечку) я жестко запрограммировал данные. В комментарии указывается местонахождение обнаруженных утечек. (Утечка происходит при повторном отображении табличного представления.)

-(void)loadData
{
    // Empty any objects that are already in the array.
    [teamsArray removeAllObjects];

    // Fill a dictionary (normally looping through a file, but hardcoded for leak hunting).
    NSMutableDictionary *oneTeamDictionary = [NSMutableDictionary dictionary];

    [oneTeamDictionary setObject:@"100"         forKey:@"basenumber"];
    [oneTeamDictionary setObject:@"Team Name"   forKey:@"teamname"];
    [oneTeamDictionary setObject:@"XYZ"         forKey:@"teamabbr"];
    [oneTeamDictionary setObject:@"USA"         forKey:@"countryabbr"];
    [oneTeamDictionary setObject:@"Joe"         forKey:@"manager"];

    // Add this team to the array used to display table data.
    [teamsArray addObject:[oneTeamDictionary copy]];  // Leaks Malloc 32 bytes and _NSCFDictionary 48 bytes here.

    // Reload the table view with new data.
    [self.tableView reloadData];
}

В моем состоянии новичка я бы подумал, что [teamArray release] освободит объект словаря. Я также пробовал использовать "alloc] init]" для создания словаря, а также освобождать и перераспределять teamArray (вместо вызова removeAllObjects ).

1
задан Justin Boo 20 May 2012 в 13:42
поделиться