IOS开发笔记11-Object-C中的传递消息

转载请标明出处:
http://blog.csdn.net/hai_qing_xu_kong/article/details/53534039
本文出自:【顾林海的博客】

前言

在前一篇例子中传递的是一个无参的消息,接着继续介绍传递实参的消息。

实例

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSDate *today=[NSDate date];

        NSDate *later=[today dateByAddingTimeInterval:100000];

        NSLog(@"%@",later);
    }
    return 0;
}

以上程序中dateByAddingTimeInterval:方法接受新的NSDate实例和初始NSDate实例的差值。方法带实参的时候,冒号是构成方法名的一个重要部分。

接下来看看带多个实参的例子:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...

        NSDate *date=[NSDate date];

        NSCalendar *calendar=[NSCalendar currentCalendar];

        unsigned long day=[calendar ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];

        NSLog(@"%lu",day);
    }
    return 0;
}

NSDate对象无法计算某个日期是相应月份中的第几日,因此我们需要NSCalendar对象,发送一个currentCalendar消息给NSCalendar类来创建一个NSCalendar实例。NSCalendar有一个ordinalityOfUnit:inUnit:forDate: 方法 ,通过它可以获取更多关于NSDate的信息,因此需要传入三个实参,所以该方法名包含三个冒号。

什么叫做消息的嵌套发送,可以看下面的例子:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...

        double seconds =[[NSDate date] timeIntervalSince1970];
        NSLog(@"%f",seconds);
    }
    return 0;
}

[[NSDate date] timeIntervalSince1970];这种形式就是消息的嵌套发送。

唯一必须以嵌套的形式连续发送的消息是alloc和init。每个类都有一个alloc类方法,它能够创建一个新的对象,并返还指向该对象的指针。通过alloc创建出来的对象,必须经过初始化才能使用。每个类也都有一个init实例方法,它用来初始化实例。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSDate *today=[[NSDate alloc] init];
        NSCalendar *calendar=[NSCalendar currentCalendar];

        unsigned long day=[calendar ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:today];

        NSLog(@"%lu",day);
    }
    return 0;
}

使用以上方法和发送date消息创建NSDate对象没有区别。NSDate的init方法会将NSDate对象初始化为当前的日期和时间,就像date方法那样。

nil和id

在Object-C中,nil是值为0的指针。同时向nil发送消息,什么事情也不会发生。

当声明指向对象的指针时,通常都会明确地写出相应对象的类,但是在编写程序时,很可能会碰到声明指针时并不知道所指对象的类型,因此,可以使用id类型来表示。

id student;

id类型的含义是:可以指向任意类型Object-C对象的指针。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值