我正在通过 Objective-C 编程中的一个挑战,The Big Nerd Ranch Guide,我对其中一个挑战感到有些困惑。
使用 NSDate 的两个实例来计算你已经活了多少秒。提示:这是您如何根据年、月等创建新日期对象的方法:
所以我需要以秒为单位计算现在和我的出生日期之间的差异。听起来不错。然后提示出现:
@autoreleasepool {
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:1981];
[comps setMonth:7];
[comps setDay:12];
[comps setHour:1];
[comps setMinute:55];
[comps setSecond:33];
NSCalendar *g = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *dateOfBirth = [g dateFromComponents:comps];
第一个问题是我不明白这*g
是什么意思。我知道它是一个指向 NSCalendar 对象的指针。但我们为什么需要它?代表什么g
?
然后示例代码使用该g
变量来获取日期。在另一种语言中,这就像DateDiff(dateOne, dateTwo, interval)
. 我不清楚为什么首先需要 Calendar 对象,以及为什么我们必须创建日期组件来提供对象。
这对我来说是全新的,我过去曾使用过动态语言。所以像“傻瓜”这样的解释会很棒!