Juste une petite question vraiment:Gestion de la mémoire dans tableviewDataSource
J'exécute une méthode pour tirer des enregistrements à partir d'une base de données SQLite dans un tableau, attribuant alors le contenu de ce tableau à une variable d'instance.
@interface {
NSArray *items;
}
@implementation
// The population method.
-(void)populateInstanceVariable
{
NSMutableArray *itemsFromDatabase = [[NSMutableArray alloc] init];
// Sqlite code here, instantiating a model class, assigning values to the instance variables, and adding this to the itemsFromDatabase Array.
self.items = itemsFromDatabase;
[itemsFromDatabase release];
}
// viewDidLoad is calling the method above
-(void)viewDidLoad
{
[self populateInstanceVariable];
[super viewDidLoad];
}
// TableViewDataSource method - cellforIndexPath
- (UITableViewCell *)tableView:(UITableView *)passedInTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault];
// Load in my model from the instance variable - ***1
MyDataModel *model = [items objectAtIndexPath:indexPath.row];
// Assign the title to the cell from the model data
cell.textLabel.text = model.title;
// This is the part i'm stuck on, releasing here causes a crash!
[model release];
return cell;
}
@end
Ma question est double:
- Est-ce que je fais pour affecter des données à l'instance droit variable? et suis-je gérer correctement la mémoire?
- Comment gérer la mémoire de cet élément de modèle dans la source de données tableview? La seule façon que je puisse faire fonctionner correctement est que je ne libère pas du tout l'objet
*model
, mais cela cause sûrement des fuites?
Cheers.
Merci, je suis en train d'utiliser les tablesviewcells réutilisables, je ne pouvais pas être dérangé de les écrire dans la question. –
Des idées sur l'affectation initiale à la variable d'instance? c'est-à-dire où est le meilleur endroit pour le faire, dans viewWillAppear, viewDidLoad? etc. –
Ajout au second point. Posséder signifie: vous avez fait un 'retain', 'alloc/init', 'new' ou 'copy'. –