我对 Objective-C 内存管理相当陌生,虽然我认为我理解它,但我有一个无法解决的问题。
我有这个属性:
@property (nonatomic, retain) NSDate *dateDisplayed;
我使用自定义方法在 viewDidLoad 中分配:
self.dateDisplayed = [self dbDateFormatToNsDate:@"15/11/2011"];
我的dbDateFormatToNsDate
方法如下所示:
- (NSDate *) dbDateFormatToNsDate:(NSString *) date {
NSDateFormatter *d = [[NSDateFormatter alloc] init];
[d setDateFormat:@"dd/MM/yyyy"];
NSDate *toReturn = [d dateFromString:date];
[d release];
return toReturn;
}
所以它返回一个自动释放的对象(如果 NSDate 遵循约定)。但是当我从viewDidLoad
另一个试图阅读的函数中出来时dateDisplayed
:
[dateDisplayed isEqualToDate:[self dbDateFormatToNsDate:@"15/11/2011"]]
我得到一个 NSZombie 异常。谢谢你的帮助!