当UITableView滚动时,内存不断增加

时间:2013-06-13 10:50:51

标签: ios uitableview memory

有一个我从未见过的奇怪问题

有一个array(),包括一个名为MyClass的自定义对象,由JSONKit解析;

当我继续滚动tableview时,内存也会不断增加。

但是当替换

cell.textLabel.text = myclass.name;

cell.textLabel.text = @"cool"; 

cell.textLabel.text = [NSString stringWithFormate:@"a-%d", indexPath.row];

没有稳定的记忆

但如果我使用

cell.textLabel.text = [NSString stringWithFormate:@"a-%@-i",myclass.name, indexPath.row];

它也在不断增加;

这会让我疯狂!

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *identifier = @"Singers";
    OMTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    MyClass *myclass = [self.data objectAtIndex:indexPath.row];
    if (cell == nil){
        cell = [[[OMTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];   
    }

    cell.textLabel.text = myclass.name;

    return cell;
}

MyClass的

有两个一级基地另一个继承

基地:

@interface OMBase : NSObject {
    NSMutableDictionary *data;
    NSString *name;
    NSArray *keys;
}

@property (nonatomic, retain) NSString *name;
@property (nonatomic, copy) NSMutableDictionary *data;

@implementation OMBase

@synthesize data, name;


- (void)setData:(NSMutableDictionary *)adata{
    if (data){
        [data release];
        data = nil;
    }
    data = [adata mutableCopy];
}

- (void)dealloc{
    if (keys){
        [keys release];
    }
    [data release];
    [super dealloc];
}

- (id)init{
    if (self = [super init]){
        self.data = [[[NSMutableDictionary alloc] initWithCapacity:20] autorelease];
    }
    return self;
}

继承:

#import "OMBase.h"

@interface OMLyric : OMBase

- (NSString *)songid;
- (NSString *)content;

#import "OMLyric.h"

@implementation OMLyric

- (NSString *)songid{
    return [data objectForKey:@"songid"];
}

- (NSString *)content{
    return [data objectForKey:@"content"];
}

1 个答案:

答案 0 :(得分:0)

好像你的myclass.name getter返回一个新的已分配对象。如果没有看到myclass,我们就不能说更多。