从方法返回后NSDate为零

时间:2017-11-29 21:02:14

标签: ios nsdate nsdateformatter

我有一个简单的方法,可以从像“NOV 2017”这样的字符串中确定NSDate。当我逐步执行该方法时,actualDate具有正确的值,但nil被传递给调用方法。

下面的代码一直工作到最近,我正在使用针对iOS 10/11的Xcode 9.0。

这是调用方法

NSDate *eventDate = [DateClass dateFromMonthYearString:@"NOV 2017"];

方法定义

+(NSDate*)dateFromMonthYearString:(NSString*)monthYearString
{
    NSDateFormatter *formatter = [self cachedFormatter];
    [formatter setDateFormat:MONTH_YEAR_DATE_FORMAT];

    NSDate* actualDate = [formatter dateFromString:monthYearString];
    return actualDate;
}

+(NSDateFormatter*) cachedFormatter
{
    if (cachedDateFormatter == nil)
    {
        cachedDateFormatter = [[NSDateFormatter alloc] init];
        cachedDateFormatter.locale = [NSLocale currentAppLocale];
    }

    return cachedDateFormatter;
}

MONTH_YEAR_DATE_FORMAT定义为......

NSString * const MONTH_YEAR_DATE_FORMAT = @"MMM yyyy";

当我在方法定义中打印日期对象时,Xcode会正确打印日期。当我试图在方法定义之外'po'时,我只是得到类似的东西

(lldb) po eventDate
0x000000012eb048e0

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

因此,当我通过NSLog将值打印到控制台时,它会打印正确的值。看起来它只是变量显示和'po'命令在X9.1中无法正常工作?