Selon mon exigence d'application, je montre les images de contact dans un UITableView comme indiqué ci-dessous.UITableView avec des problèmes d'image de contact
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath
(NSIndexPath *)indexPath
{
//NSMutableArray *sourceArray = sourceList;
static NSString *identifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil)
{
//If not possible create a new cell
cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:identifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
cell.opaque = NO;
CGRect LabelFrame = CGRectMake(130, 33, 150, 13);
callImage = [[UIImageView alloc] initWithFrame:LabelFrame];//phone image
callImage.tag = 1;
[cell.contentView addSubview:callImage];
[callImage release];
-----
-----
}
UIImageView *callImage = (UIImageView *)[cell viewWithTag:1];
ABRecordRef contact = [self getContact];
if(contact && ABPersonHasImageData(contact))
{
UIImage *contactImage = [UIImage imageWithData:(NSData*)ABPersonCopyImageData(contact)];
callImage.image = contactImage;
}
}
J'ai deux problèmes si j'utilise le segment de code ci-dessus.
- Tableau Le défilement est trop lent. Si commentez le code "ajout d'image", alors UITable répond très rapidement.
- Gestion de la mémoire. Mon application a commencé à utiliser 25 à 30 Mo de RAM.
Existe-t-il une meilleure façon d'éviter les deux problèmes ci-dessus?
Pourriez-vous poster le code complet de votre méthode cellForRowAtIndexPath? Votre problème est peut-être que vous ne réutilisez pas vos cellules correctement. – Vladimir
Oui, je les réutilise correctement. Quoi qu'il en soit, je l'affiche dans ma question ci-dessus elle-même. – prathumca