本帖最后由 acdd112 于 2015-9-25 15:30 编辑
以NSDate类为例,NSDate的实例代表某个时间点,可以把它当做一个时间戳。在main.m中,增加以下代码:- #import <Foundation/Foundation.h>
- int main (int argc, const char * argv[ ])
- {
- @autoreleasepool {
- NSDate *now = [NSDate date];
- NSLog(@"This date is %@", now);
- }
- return 0;
- }
复制代码
NSDate类中有一个date方法。在以上代码中,我们向NSDate类发送了date消息,让它执行date方法。
- NSDate *now = [NSDate date];
复制代码 这就是一条发送消息的语句。
在[NSDate date]中
NSDate称为接收方:指针,指向接收消息的对象的地址。
date称之为选择器:方法名,要触发的反法的方法名。
在date方法执行后,NSDate实例声明一部分内存,将NSDate实例初始化为当前的日期/时间,然后返回新对象的地址。指针now中则保存了NSDates实例在内存中的地址。我们可以调用NSlog()函数,将其内容打印出来。
- NSLog(@"This date is %@", now);
复制代码
现在有了NSDate实例,可一给这个新对象放送消息,比如发送timeIntervalSince1970给它。
此方法会算出“自己”和1970年1月1日12:00 AM(GTM)之间的时差(以秒为单位),然后把结果返回给你。(为什么选择1970年呢?因为OS X和IOS 系统都是基于Unix开发的,而1970年正是“Unix 时代”的开始。)
发送timeIntervalSince1970给now变量指向的NSDate实例,此方法会返回一个双精度数,所以我们把这个结果保存在一个双精度变量中,代码如下:
- #import <Foundation/Foundation.h>
- int main (int argc, const char * argv[ ])
- {
- @autoreleasepool {
- NSDate *now = [NSDate date];
- NSLog(@"This date is %@", now);
-
- double seconds = [now timeIntervalSince1970];
- NSLog(@"It has been %f seconds since the start of 1970.", seconds);
- }
- return 0;
- }
复制代码 以上代码中发送了两条消息,分别是
- NSDate *now = [NSDate date]
- double seconds = [now timeIntervalSince1970]
复制代码 第一条给NSDate类发送date消息,date是一个类方法。通常来说,类方法会创建类的实例,并初始化实例变量。
第二条是给now变量指向的NSDate实例发送了timeIntervalSince1970消息,timeIntervalSince1970是一个实例方法。通常来说,实例方法会提供实例中实例变量的信息,或是对实例的实例变量进行操作。
|
|