使用loadNibNamed加载自定义视图显示内存泄漏

时间:2010-05-20 04:38:51

标签: iphone memory-leaks tablecell

我有许多使用界面构建器

构建的自定义表格单元格和视图

在界面构建器中,所有内容都设置相似。有一个表格单元格和一些其他UILabel和一个背景图像

对象所有者,如果nib是NSObject 表格单元格的类是我的表格单元格的类名称

以下是我在代码中创建表格单元格的方法:

SectionedSwitchTableCell *cell = nil;
NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:kSectionedSwitchTableCellIdentifier owner:owner options:nil];
for(id currentObject in nibs)
{
    if([currentObject isKindOfClass:[SectionedSwitchTableCell class]])
    {
        cell = (SectionedSwitchTableCell *)currentObject;
        break;
    }
}
return cell;

对于我的自定义表头,我有这个

    NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:@"CustomTableHeader" owner:self options:nil];
    for(id currentObject in nibs)
    {
        if([currentObject isKindOfClass:[CustomTableHeader class]])
        {
           return header
        }
    }

在自定义视图的.h和.m文件中,我有IBOutlet,@ property设置除了背景图像UIImageView之外的所有内容。所有拥有IBOutlet和@property的东西也都是@synthesized并在.m文件中发布。

泄漏表明我在创建这些自定义视图对象时有CALayer的内存泄漏。我在创建这些自定义视图对象时是否在做错了什么?我有点想弄清楚这些泄漏来自哪里。

作为旁注,我在这些自定义视图中定义了UIImageView背景图像,但我没有在.h和.m文件中定义属性和IBOutlets。当我通过Leaks运行它时,定义它们并没有什么不同,只是想确认我是否正在做正确的事情。

任何输入都会非常有用。谢谢:))

1 个答案:

答案 0 :(得分:1)

检查自定义单元格xib文件,确保已将标识符(kSectionedSwitchTableCellIdentifier)设置为单元格。 我有类似的问题,并修复此问题。