【发布时间】:2013-02-24 08:24:28
【问题描述】:
- (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];
}
在初始化方法中我声明了dueDate = [NSDate date]。但是当我调试时,在这一行
self.lbDueDate.text = [formatter stringFromDate:dueDate];
输出:(NSDate *)dueDate = 0x0c497390 那么发生了什么?
【问题讨论】:
-
当对象未正确保留时可能会发生这种情况,这是 ARC 项目吗?如果不是 ARC,您应该使用
dueDate = [[NSDate date] retain]; -
将
dueDate声明为@property 并使用self.dueDate而不是dueDate。这应该在 ARC/非 ARC 中修复它。 -
和@property 应该是retain/strong(非ARC/ARC)...
-
你能解释一下为什么如果使用 self.dueDate 而不是 dueDate 问题就解决了吗?在这种情况下,ivar 和属性之间有什么区别?
标签: ios objective-c nsdate