表视图增加内存



我创建了一个自定义表视图。除此之外,我还有一些简单的表格视图。当我从上一个表视图转到下一个自定义表视图时,内存会增加。下面是自定义表视图的代码。请检查。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *simpleTableIdentifier = @"ComponentCell";
    ClientAssessmentComponentCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil)
    {
        cell = [[ClientAssessmentComponentCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }
    cell.accessoryType = UITableViewCellAccessoryNone;
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    SubComponent *componentInfo = [self.componentsData objectAtIndex:indexPath.row];
    cell.component_name.text = componentInfo.componentName;
    NSLog(@"status %d --- %@ ---- %@ ---- %@",(int)componentInfo.componentStatus,componentInfo.componentAllImages,componentInfo.componentNotes,componentInfo.componentScore);
    cell.tag = indexPath.row;
    cell.dirty_btn.tag = indexPath.row;
    cell.camera_img.tag = indexPath.row;
    cell.count_img.tag = indexPath.row;
    cell.count_lbl.tag = indexPath.row;
    cell.notes_img.tag = indexPath.row;
    cell.count_lbl.hidden = true;
    cell.count_img.hidden = true;
    cell.count_lbl.textColor = [UIColor whiteColor];
    cell.count_lbl.textAlignment = NSTextAlignmentCenter;
    cell.count_lbl.adjustsFontSizeToFitWidth = YES;
    cell.a_btn.tag = indexPath.row;
    cell.b_btn.tag = indexPath.row;
    cell.c_btn.tag = indexPath.row;
    cell.d_btn.tag = indexPath.row;
    cell.e_btn.tag = indexPath.row;
    cell.f_btn.tag = indexPath.row;
    [cell.dirty_btn setBackgroundColor:[UIColor colorWithRed:(138/256.0) green:(138/256.0) blue:(138/256.0) alpha:1]];
    [cell.a_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    [cell.b_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    [cell.c_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    [cell.d_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    [cell.e_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    [cell.f_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    UITapGestureRecognizer *notes_tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(notesView:)];
    notes_tap.numberOfTapsRequired = 1;
    [cell.notes_img addGestureRecognizer:notes_tap];
    UITapGestureRecognizer *image_tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(takePhoto:)];
    notes_tap.numberOfTapsRequired = 1;
    [cell.camera_img addGestureRecognizer:image_tap];
    [cell.dirty_btn addTarget:self action:@selector(do_later_button_click1:) forControlEvents:UIControlEventTouchUpInside];
    [cell.a_btn addTarget:self action:@selector(a_button_click1:) forControlEvents:UIControlEventTouchUpInside];
    [cell.b_btn addTarget:self action:@selector(b_button_click1:) forControlEvents:UIControlEventTouchUpInside];
    [cell.c_btn addTarget:self action:@selector(c_button_click1:) forControlEvents:UIControlEventTouchUpInside];
    [cell.d_btn addTarget:self action:@selector(d_button_click1:) forControlEvents:UIControlEventTouchUpInside];
    [cell.e_btn addTarget:self action:@selector(e_button_click1:) forControlEvents:UIControlEventTouchUpInside];
    [cell.f_btn addTarget:self action:@selector(f_button_click1:) forControlEvents:UIControlEventTouchUpInside];
    if([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPad)
    {
        cell.component_name.font = [cell.component_name.font fontWithSize:22.0];
        cell.dirty_btn.titleLabel.font = [cell.dirty_btn.titleLabel.font fontWithSize:18.0];
    }
    else
    {
        cell.component_name.font = [cell.component_name.font fontWithSize:18.0];
        cell.dirty_btn.titleLabel.font = [cell.dirty_btn.titleLabel.font fontWithSize:14.0];
    }
    if(componentInfo.componentNotes != nil && componentInfo.componentNotes != NULL && ![componentInfo.componentNotes isEqual:@"(null)"] && ![componentInfo.componentNotes isEqual:@"null"])
    {
        cell.notes_img.image = [UIImage imageNamed:@"notes-with-glow.png"];
    }
    if(componentInfo.componentAllImages != nil && componentInfo.componentAllImages != NULL && ![componentInfo.componentAllImages isEqual:@"(null)"] && ![componentInfo.componentAllImages isEqual:@"null"] && ![componentInfo.componentAllImages isEqual:@""] )
    {
        cell.camera_img.image = [UIImage imageNamed:@"camera-with-glow.png"];
        NSArray *image_arr = [componentInfo.componentAllImages componentsSeparatedByString:@", "];
        cell.count_img.hidden = NO;
        cell.count_lbl.hidden = NO;
        cell.count_lbl.text = [NSString stringWithFormat:@"%d",(int)[image_arr count]];
        for(int x = 0; x < [image_arr count]; x++){
            NSString *imageName =[image_arr objectAtIndex:x];
            if([imageName containsString:@"http:"])
            {
                NSArray *imgNameSplit = [imageName componentsSeparatedByString:@"/"];
                NSLog(@"count is %lu",(long)[imgNameSplit count]);
                imageName = [imgNameSplit objectAtIndex:[imgNameSplit count]-1];
            }
            if(x == 0){
                self.componentImage.componentAllImages = imageName;
                self.componentImage.imageName =[[NSMutableArray alloc]init];
                [self.componentImage.imageName addObject:imageName];
                self.componentImage.imageClickedTime = [[NSMutableArray alloc]init];
                NSString *image_clicked_time = [self getClickTime];
                [self.componentImage.imageClickedTime addObject:image_clicked_time];
                self.componentImage.componentAllImagesTime = image_clicked_time;
            }
            else{
                self.componentImage.componentAllImages = [self.componentImage.componentAllImages stringByAppendingString:@", " ];
                self.componentImage.componentAllImages = [self.componentImage.componentAllImages stringByAppendingString:imageName];
                [self.componentImage.imageName addObject:imageName];
                NSString *image_clicked_time = [self getClickTime];
                [self.componentImage.imageClickedTime addObject:image_clicked_time];
                self.componentImage.componentAllImagesTime = [self.componentImage.componentAllImagesTime stringByAppendingString:@", "];
                self.componentImage.componentAllImagesTime = [self.componentImage.componentAllImagesTime stringByAppendingString:image_clicked_time];
            }
        }
    }
    if(componentInfo.componentStatus == 1)
    {
        [cell.dirty_btn setBackgroundColor:[UIColor colorWithRed:(138/256.0) green:(138/256.0) blue:(138/256.0) alpha:1]];
    }
    else if(componentInfo.componentStatus == 2)
    {
        [cell.dirty_btn setBackgroundColor:[UIColor colorWithRed:(138/256.0) green:(138/256.0) blue:(138/256.0) alpha:1]];
    }
    else if(componentInfo.componentStatus == 3)
    {
        [cell.dirty_btn setBackgroundColor:[UIColor colorWithRed:(252/255.0) green:(78/255.0) blue:(59/255.0) alpha:1]];
    }
    else if(componentInfo.componentStatus == 4)
    {
        [cell.dirty_btn setBackgroundColor:[UIColor colorWithRed:(138/256.0) green:(138/256.0) blue:(138/256.0) alpha:1]];
    }
    if([componentInfo.componentScore intValue] == 1)
    {
        [cell.a_btn setImage:[UIImage imageNamed:@"radio_checked.png"]forState:UIControlStateNormal];
        [cell.b_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.c_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.d_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.e_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.f_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    }
    else if([componentInfo.componentScore intValue] == 2)
    {
        [cell.b_btn setImage:[UIImage imageNamed:@"radio_checked.png"]forState:UIControlStateNormal];
        [cell.a_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.c_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.d_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.e_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.f_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    }
    else if([componentInfo.componentScore intValue] == 3)
    {
        [cell.c_btn setImage:[UIImage imageNamed:@"radio_checked.png"]forState:UIControlStateNormal];
        [cell.b_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.a_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.d_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.e_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.f_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    }
    else if([componentInfo.componentScore intValue] == 4)
    {
        [cell.d_btn setImage:[UIImage imageNamed:@"radio_checked.png"]forState:UIControlStateNormal];
        [cell.b_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.c_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.a_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.e_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.f_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    }
    else if([componentInfo.componentScore intValue] == 5)
    {
        [cell.e_btn setImage:[UIImage imageNamed:@"radio_checked.png"]forState:UIControlStateNormal];
        [cell.b_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.c_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.d_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.a_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.f_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    }
    else if([componentInfo.componentScore intValue] == 6)
    {
        [cell.f_btn setImage:[UIImage imageNamed:@"radio_checked.png"]forState:UIControlStateNormal];
        [cell.b_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.c_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.d_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.e_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
        [cell.a_btn setImage:[UIImage imageNamed:@"radio.png"]forState:UIControlStateNormal];
    }
    return cell;
}

请帮帮我。如何解决这种情况的内存问题?

您应该首先在ViewDidLoad上注册此单元格,然后尝试将这些通用设置放在Cell的(void)awakeFromNib方法中。

最新更新