私は何時間もモニターに頭をぶつけました (そして同様の投稿を読みました)。私はまだ困惑しています。
テーブル ビューにデータを表示する *.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]」を使用してディクショナリを作成し、teamsArray を解放して再割り当てしようとしました (を呼び出すのではなくremoveAllObjects
)。