As par my app requirement, I'm showing the contact images in a UITableView as shown below.
-(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;
    }
}
I've two problems if I use the above code segment.
- Table Scrolling is too slow. If comment the "adding of image" code, then UITable responds very fast.
 - Memory Management. My app started using 25 - 30 MB of RAM.
 
Is there any better way to avoid the above two problems?