A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 acdd112 于 2015-9-25 15:30 编辑

以NSDate类为例,NSDate的实例代表某个时间点,可以把它当做一个时间戳。在main.m中,增加以下代码:
  1. #import <Foundation/Foundation.h>
  2. int main (int argc, const char * argv[ ])
  3. {
  4.         @autoreleasepool {
  5.                 NSDate *now = [NSDate date];
  6.                 NSLog(@"This date is %@", now);
  7.         }
  8.         return 0;
  9. }
复制代码

NSDate类中有一个date方法。在以上代码中,我们向NSDate类发送了date消息,让它执行date方法。
  1. NSDate *now = [NSDate date];
复制代码
这就是一条发送消息的语句。
在[NSDate date]中
NSDate称为接收方:指针,指向接收消息的对象的地址。
date称之为选择器:方法名,要触发的反法的方法名。

在date方法执行后,NSDate实例声明一部分内存,将NSDate实例初始化为当前的日期/时间,然后返回新对象的地址。指针now中则保存了NSDates实例在内存中的地址。我们可以调用NSlog()函数,将其内容打印出来。
  1. NSLog(@"This date is %@", now);
复制代码

现在有了NSDate实例,可一给这个新对象放送消息,比如发送timeIntervalSince1970给它。
此方法会算出“自己”和1970年1月1日12:00 AM(GTM)之间的时差(以秒为单位),然后把结果返回给你。(为什么选择1970年呢?因为OS X和IOS 系统都是基于Unix开发的,而1970年正是“Unix 时代”的开始。)
发送timeIntervalSince1970给now变量指向的NSDate实例,此方法会返回一个双精度数,所以我们把这个结果保存在一个双精度变量中,代码如下:
  1. #import <Foundation/Foundation.h>
  2. int main (int argc, const char * argv[ ])
  3. {
  4.         @autoreleasepool {
  5.                 NSDate *now = [NSDate date];
  6.                 NSLog(@"This date is %@", now);
  7.                
  8.                 double seconds = [now timeIntervalSince1970];
  9.                 NSLog(@"It has been %f seconds since the start of 1970.", seconds);
  10.         }
  11.         return 0;
  12. }
复制代码
以上代码中发送了两条消息,分别是
  1. NSDate *now = [NSDate date]
  2. double seconds = [now timeIntervalSince1970]
复制代码
   第一条给NSDate类发送date消息,date是一个类方法。通常来说,类方法会创建类的实例,并初始化实例变量。
    第二条是给now变量指向的NSDate实例发送了timeIntervalSince1970消息,timeIntervalSince1970是一个实例方法。通常来说,实例方法会提供实例中实例变量的信息,或是对实例的实例变量进行操作。





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马