NSDate ivar 變成<不是 Objective-C 的>?


- (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:的实现中,您没有通过超类指定的初始值设定项进行调用。

最新更新