static NSDateFormatter always nil



在我的模型对象中,我分配了一个这样的日期:

static NSDateFormatter *dateFormat = nil;
if (nil == dateFormat) {
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
}
dateCreated = [dateFormat dateFromString:@"2013-03-04 09:16:41"];

我看到的是dateFormat总是nil;因此"dateCreated"设置为"nil"。

问题很简单,您在if语句中引入了另一个非static dateFormat变量。

试试这个:

static NSDateFormatter *dateFormat = nil;
if (nil == dateFormat) {
    dateFormat = [[NSDateFormatter alloc] init]; // NOT NSDateFormatter *dateFormat = ...
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
}

NSDateFormatter不为nil的原因是static关键字在开始时,static关键字初始化NSDateFormatter nil只有一次,当您稍后在代码中检查NSDateFormatter时,它永远不会为nil

最新更新