自定义UITableViewCell在Select上放弃了内存问题

时间:2015-02-17 21:45:52

标签: ios objective-c uitableview memory

我在使用自定义UITableView和自定义UITableViewCell的iOS上遇到问题。当我在Xcode Instruments上运行应用程序时,每次从自定义TableView中选择一个单元格时,我都会发现存在遗弃的内存问题。 请参阅下面的" Instruments"。

的屏幕截图

http://i.stack.imgur.com/cKz22.png

以下是用于创建单元格的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath2:(NSIndexPath *)indexPath
{

    NSString *cellIdentifier =  [NSString stringWithFormat :@"cellID%i",indexPath.row];

    customViewCell *cell = (customViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];


    if (cell == nil) {

        NSInteger cellIndex = [indexPath row];
        NSString* cellName = @"cell Name";

        NSString* keyFile = @"0_48_video_1F0423D5-D2D7-466E-8D45-38C46E9B4425.mp4_1423522824.133377";

        cell = [[customViewCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:cellIdentifier withKeyFile:keyFile andRicochetName:ricochetName fromTableViewController:self;
    }

    return cell;
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    [tableView deselectRowAtIndexPath:indexPath animated:NO];
}

我非常感谢有助于识别内存问题的任何专业知识。请注意,该应用程序是基于ARC构建的。

非常感谢

2 个答案:

答案 0 :(得分:0)

如果你只需要传递keyFile名称就可以使用这种方式。确保在界面构建器

中链接了keyFile
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath2:(NSIndexPath *)indexPath
{

    NSString *cellIdentifier =  @"cellID";
    customViewCell *cell = (customViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

        NSInteger cellIndex = [indexPath row];
        NSString* cellName = @"cell Name";

        NSString* keyFile = @"0_48_video_1F0423D5-D2D7-466E-8D45-38C46E9B4425.mp4_1423522824.133377";
        cell.keyFile=keyFile;


    return cell;
}

答案 1 :(得分:0)

将单元格标识符更改为静态字符串。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath2:(NSIndexPath *)indexPath
    {

        static NSString *cellIdentifier =  @"your tableview Cell Identifier";

        customViewCell *cell = (customViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];


        if (cell == nil) {
            NSString* cellName = @"cell Name";

            NSString* keyFile = @"0_48_video_1F0423D5-D2D7-466E-8D45-38C46E9B4425.mp4_1423522824.133377";

            cell = [[customViewCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:cellIdentifier withKeyFile:keyFile andRicochetName:ricochetName fromTableViewController:self;
        }

        return cell;
    }