我在我的UITableView
中使用UILabel作为自定义单元格。下面是我正在使用的所有代码:
头文件:
UILabel *timeLabels;
@property (nonatomic, retain) UILabel *timeLabels;
代码文件:
- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier
timeLabels=[[UILabel alloc] init];
timeLabels.textAlignment=UITextAlignmentLeft;
timeLabels.font=[UIFont boldSystemFontOfSize:12];
timeLabels.backgroundColor=[UIColor clearColor];
timeLabels.textColor=[UIColor blueColor];
- (void) layoutSubviews
frame=CGRectMake(boundsX+5, 5, 60, 45);
timeLabels.frame=frame;
[timeLabels release]
我在timeLabels.frame=frame
;
2011-08-08 12:44:07.290 EncameoApp[2014:707] -[NSCFString setFrame:]: unrecognized selector sent to instance 0x136890
2011-08-08 12:44:07.361 EncameoApp[2014:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString setFrame:]: unrecognized selector sent to instance 0x136890'
鉴于timeLabels不是NSString,而是UILabel,这很奇怪!
任何人都可以让我知道我错过了什么吗?感谢。
答案 0 :(得分:5)
我也遇到过这种问题,但是我通过设置timeLabels的值解决了这个问题: -
timeLabels.text = @"value";
而不是
timeLabels = @"value";
答案 1 :(得分:1)
你显示的代码片段是正确的,无论如何我的猜测是你很可能有一个内存问题,使你的UILabel
实例在执行layoutSubviews
之前的某个时刻被释放,然后是那个内存被NSString
重用,所以你在那里得到错误。
根据我的经验,最常见的情况是,错误地用错误的值覆盖timeLabels
会产生相同的结果。这可以在类中或从另一个类(可能尝试设置标签值)中完成。
如果您想进行简单测试,请添加
NSLog(@"timeLabels address %x", timeLabels);
同时init
和layoutSubviews
比较这两个值并看到它们不同(或者它们没有,在这种情况下你会遇到内存损坏问题)。
您应该检查您的代码,如果您需要更多帮助,请发布更多代码。