- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *TelephoneCellId = @"TelephoneCellId";
UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:TelephoneCellId];
UIImageView *imgView;
UILabel *lblName;
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:TelephoneCellId] autorelease];
UIView *uiview = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 90.0)];
imgView = [[[UIImageView alloc] initWithFrame:CGRectMake(10.0, 10.0, 60.0, 60.0)] autorelease];
imgView.tag = IMAGE_TAG;
[uiview addSubview:imgView];
lblName = [[[UILabel alloc] initWithFrame:CGRectMake(80.0, 10.0, 200.0, 20.0)] autorelease];
lblName.tag = NAME_TAG;
[uiview addSubview:lblName];
[cell.contentView addSubview:uiview];
[uiview release];
} else {
imgView = (UIImageView *)[cell.contentView viewWithTag:IMAGE_TAG];
lblName = (UILabel *)[cell.contentView viewWithTag:NAME_TAG];
}
NSDictionary *dict = [[[self.telephoneList objectForKey:[self.keys objectAtIndex:[indexPath section]]] objectAtIndex:[indexPath row]] retain];
imgView.image = [UIImage imageNamed:[dict objectForKey:@"image"]];
lblName.text = [dict objectForKey:@"name"];
[dict release];
return cell;
}
В приведенном выше коде у меня возник вопрос о сохранении и авто-освобождении.Если UITableViewCell, возвращаемый из очереди, равен нулю, то я должен сделать новый.При этом я автоматически выпускаю метку и изображение.Затем я устанавливаю текст / изображение.Если UITableViewCell НЕ равен nil, тогда я нахожу представление по тегу, однако это вернет объект с автоматическим выпуском.Должен ли я сохранить это?Затем отпустите после завершения установки значения?Или это хорошо, потому что представление сохраняет его, так что это по крайней мере 1, поэтому его безопасно не выпускать?
Помощь в таких сценариях будет высоко цениться, поэтому подведем итог, когда можно было бы просто нестипо установке / получению значений на объекте с автоматическим освобождением?
Спасибо за ваше время:)