我有点困在一个简单的代码:我想在我的表View中的一个单元格中放一个时钟,这可能吗?我有这个代码:
- (void)viewDidLoad {
[super viewDidLoad];
[NSTimer scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(updateTime:)
userInfo:nil repeats:YES];
}
- (void)updateTime:(id)sender{
NSDate *StrDate = [NSDate date];
NSDateFormatter *Dateformat = [[NSDateFormatter alloc]init];
[Dateformat setDateFormat:@"DD-MM-YYYY HH:mm:ss"];
NSMutableString *DateStr = [NSMutableString stringWithFormat:@"%@",[Dateformat stringFromDate:StrDate]];
string = DateStr;
}
<。>在.h文件中,我创建了:
NSMutableString * string;
并且在cellForRow ...方法中,我把:
cell.textLabel.text = string;
所以这不起作用,你能解释一下为什么吗?
非常感谢
答案 0 :(得分:1)
用
NSMutableString *DateStr = [NSMutableString stringWithFormat:@"%@",[Dateformat stringFromDate:StrDate]];
您正在创建一个自动释放的可变字符串。与
string = DateStr;
您将string
的地址指定为DateStr
的地址。当DateStr
被自动释放时,该地址将在运行循环结束后指向无处。您可以使用
DateStr
string = [DateStr retain];
或使用
创建保留的DateStr
NSMutableString *DateStr = [[NSMutableString alloc] initWithFormat:@"%@",[Dateformat stringFromDate:StrDate]];
但是当字符串指向之前的地址时,你将再次泄漏。因此,您应该将字符串设为属性
@property (nonatomic, copy) NSMutableString *string;
并使用以下代码:
NSMutableString *DateStr = [NSMutableString stringWithFormat:@"%@",[Dateformat stringFromDate:StrDate]];
self.string = DateStr;
使用最后一行复制字符串。
答案 1 :(得分:0)
我认为您必须在tableview中重新加载数据:[self.tableView reloadData]
。在string = DateStr;
答案 2 :(得分:0)
您是否尝试过将字符串分配给文本字段?
[cell.textField setStringValue: string];