J'ai une méthode distincte pour créer des UITableViewCell sur mesure, est donnée ci-dessouscomment tag se souvient des objets libérés? iPhone
-(UITableViewCell*)getCellContentView:(NSString*)cellIdentifier
{
CGRect photoFrame=CGRectMake(10, 10, 60, 60);
CGRect label1Frame=CGRectMake(85, 9, 200, 32);
CGRect label2Frame=CGRectMake(85, 38, 200, 25);
CGRect labelBgFrame=CGRectMake(0, 0, 320, 80);
UITableViewCell *cell=[[[UITableViewCell alloc] initWithFrame:CGRectMake(0, 0, 300, 80) reuseIdentifier:cellIdentifier] autorelease];
UILabel *tmp;
tmp=[[UILabel alloc] initWithFrame:label1Frame];
tmp.tag=1;
tmp.textColor=[UIColor blackColor];
tmp.font=[UIFont boldSystemFontOfSize:18];
tmp.backgroundColor=[UIColor clearColor];
[cell.contentView addSubview:tmp];
[tmp release];
}
Ici, @ @ tmp est déjà sorti --- » Alors, comment, iPhone se souvient d'avoir publié objet & nous pouvons définir le texte à . cette étiquette
Vous avez raison, Alex. L'objet tmp n'est pas encore libéré, car cell.contentView a un pointeur retenu. sagar, si vous voulez voir le nombre de retenues en action, vous pouvez ajouter la ligne NSLog (@ "retainCount is now% d", [tmp retainCount]); à plusieurs endroits dans votre code. Vous verrez qu'il va de 1 à 2 et redescend à 1 à la toute fin - jamais à 0, ce qui le libérerait réellement. – Tyler
Tyler, merci pour les commentaires. – Alex