- (id)initWithCoder:(NSCoder *)aDecoder
{
dueDate = [NSDate date];
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateStyle:NSDateFormatterShortStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
self.lbDueDate.text = [formatter stringFromDate:dueDate];
}
在init方法中,我声明了dueDate=[NSDate]。但当我调试时,在这一行
self.lbDueDate.text = [formatter stringFromDate:dueDate];
和输出:(NSDate*(dueDate=0x0c497390那么发生了什么?
表示对象已被-dealloc
ed(除非是nil
(。因此,在运行静态分析器并查看代码之后,使用Zombies运行并更频繁地发送消息。
源中的一个问题:dueDate = [NSDate date];
应该是dueDate = [[NSDate date] copy];
。另一个问题是,在-initWithCoder:
的实现中,您没有通过超类指定的初始值设定项进行调用。