-3

私のアプリでは、テーブル ビューに画像を読み込みます。画像を削除する削除ボタンがあります。

画像サイズが大きすぎる場合 (例: 1.5MB)、メモリ不足の警告によりアプリがクラッシュします。

楽器や他のソリューションを使用してこれを解決するにはどうすればよいですか?

メソッドでオブジェクトを解放するcellforRowIndexPath方法。

プロジェクトを ARC 対応として作成する必要がありますか?

ARC Enabled プロジェクトを作成すると、どのような影響がありますか?

cellRow の私のコード:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    }

    for (UIView *v in [cell.contentView subviews]) {
        [v removeFromSuperview];
    }

    int section = indexPath.section;

    sectionItems = [sections objectAtIndex:section];

    int n = [sectionItems count];

    //NSLog(@"section items -%d",n );

    int  i=0;
    int i1=0;

    while(i<n)
    {
        int yy = 3 +i1*100;
        int j=0;
        for(j=0; j<3;j++){

            if (i>=n) break;
            Item *item = [sectionItems objectAtIndex:i];            

            //Imageview
            UIImageView *pp=[[UIImageView alloc]initWithFrame:CGRectMake(20+215*j, yy*2.3, 190, 190)];
            pp.image=item.img;
            //NSLog(@"%@ %@",item.img,item.image);
            //pp.backgroundColor=[UIColor redColor];
            [cell.contentView addSubview:pp];

            //Image Button
           // CGRect rect1 = CGRectMake(30+215*j, yy*2.3, 190, 250);
            CGRect rect1 = CGRectMake(20+215*j, yy*2.3, 190, 190);
            UIButton *button1=[[UIButton alloc] initWithFrame:rect1];
            [button1 setFrame:rect1];
            NSString *tagValue1 = [NSString stringWithFormat:@"%d%d", indexPath.section+1, i];
            button1.tag = [tagValue1 intValue];
            [button1 setBackgroundImage:nil forState:UIControlStateNormal];
            [button1 addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
           // button1.backgroundColor=[UIColor greenColor];
            [cell.contentView addSubview:button1];

           //delete button..16 03 2013
            CGRect rect2 = CGRectMake(176+215*j, yy*2.3, 30, 30);
            UIButton *button2=[[UIButton alloc] initWithFrame:rect2];
            [button2 setFrame:rect2];
            NSString *tagValue2 = [NSString stringWithFormat:@"%d%d", indexPath.section+1, i];
            button2.tag = [tagValue2 intValue];
            [button2 setBackgroundImage:[UIImage imageNamed:@"can.png"] forState:UIControlStateNormal];
            [button2 addTarget:self action:@selector(deleteItem:) forControlEvents:UIControlEventTouchUpInside];
            //button2.backgroundColor=[UIColor blackColor];


            [cell.contentView addSubview:button2];
            if (isDeleting == YES)
            {
                [button2 setHidden:NO];
                [button1 setUserInteractionEnabled:NO];
            }
            else
            {
                [button1 setUserInteractionEnabled:YES];
                [button2 setHidden:YES];
            }


            i++;
        }
        i1 = i1+1;
    }

    cell.selectionStyle=UITableViewCellSelectionStyleNone;

    return cell;
}
4

2 に答える 2