有一个我从未见过的奇怪问题
有一个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"];
}
答案 0 :(得分:0)
好像你的myclass.name
getter返回一个新的已分配对象。如果没有看到myclass
,我们就不能说更多。