在TableView中分配的数组cellforrowat索引路径委托是泄漏内存

时间:2012-10-30 14:39:10

标签: objective-c memory-leaks

NSMutableArray * lCellColValues = (NSMutableArray * ) nil;
lCellColValues = [[[NSMutableArray alloc] init] autorelease];

if (0 == lSecModulus) {
    if cObjTransListPtr.count > 0 && lObjTransData.m_cObjSDElemInfoPtr.count > 0) {
        [lCellColValues addObject: lObjTransData.m_cObjTransNamePtr];
        [lCellColValues addObject: [[NSNumber numberWithInteger: lObjTransData.m_cTransCounter] stringValue]];
    } else {
        if (nil != lObjSDElemInfo.m_cObjStartTimePtr) {
            NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
            dateFormatter.dateFormat = @"HH:mm:ss";
            [dateFormatter setTimeZone: [NSTimeZone timeZoneForSecondsFromGMT: 0.0]];
            NSString * myDateAsString = [dateFormatter stringFromDate: lObjSDElemInfo.m_cObjEndTimePtr];
            [lCellColValues addObject: myDateAsString];
            SAFE_RELEASE(dateFormatter)
        } else {
            [lCellColValues addObject: @""];
        }

    [lCellColValues addObject: [[NSNumber numberWithDouble: lObjSDElemInfo.m_cElementTime] stringValue]];
    }
}

if ((CustSplitCell * ) nil == lObjCellPtr) {
    if (m_cObjTransListPtr.count > 0) {
        lObjCellPtr = [[[CustSplitCell alloc] initWithStyleAndTitles: UITableViewCellStyleDefault reuseIdentifier: lObjCellIdentifier titles: lCellColValues rowNumber: indexPath.row] autorelease];
    } else {
        [lCellColValues addObject: @""];
        lObjCellPtr = [[[CustSplitCell alloc] initWithStyleAndTitles: UITableViewCellStyleDefault reuseIdentifier: lObjCellIdentifier titles: lCellColValues rowNumber: indexPath.row] autorelease];
    }
}

1 个答案:

答案 0 :(得分:1)

也许这可以帮到你: http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/MemoryMgmt/Articles/MemoryMgmt.html

我认为您需要确保在适当的地方使用自动释放,在适当的地方保留等等。如果您只使用alloc / init而不进行自动释放,那么您需要确保在完成之后有一个参考你可以自己发布它。当您以这种方式执行操作时,您将完全拥有该对象。这些都包含在我链接的规则中。

请注意,此答案是此问题中评论的副本:Memory leak for object in array