Я часами стучал головой по монитору (и читал похожие посты).Я все еще в замешательстве.
Я объявляю массив в моем * .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];
}
В моем состоянии новичка я бы подумал, что [teamsArray release]
освободит объект словаря.Я также попытался использовать «alloc] init]» для создания словаря, а также освободить и перераспределить groupsArray (вместо вызова removeAllObjects
).