IOS开发入门IOS开发笔记11-Object-C中的传递消息
白羽 2019-04-16 来源 :网络 阅读 468 评论 0

摘要:本文将带你了解IOS开发入门IOS开发笔记11-Object-C中的传递消息,希望本文对大家学IOS有所帮助。

    本文将带你了解IOS开发入门IOS开发笔记11-Object-C中的传递消息,希望本文对大家学IOS有所帮助。


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


前言
   IOS开发笔记11-Object-C中的传递消息,在前一篇例子中传递的是一个无参的消息,接着继续介绍传递实参的消息。
   实例
   ?1234567891011121314#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;}</foundation>
   以上程序中dateByAddingTimeInterval:方法接受新的NSDate实例和初始NSDate实例的差值。方法带实参的时候,冒号是构成方法名的一个重要部分。
   接下来看看带多个实参的例子:
   ?1234567891011121314151617#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;}</foundation>
   
    NSDate对象无法计算某个日期是相应月份中的第几日,因此我们需要NSCalendar对象,发送一个currentCalendar消息给NSCalendar类来创建一个NSCalendar实例。NSCalendar有一个ordinalityOfUnit:inUnit:forDate:  方法 ,通过它可以获取更多关于NSDate的信息,因此需要传入三个实参,所以该方法名包含三个冒号。
   
   什么叫做消息的嵌套发送,可以看下面的例子:
   ?12345678910111213#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;} </foundation>
   ?1[[NSDate date] timeIntervalSince1970];这种形式就是消息的嵌套发送。
   唯一必须以嵌套的形式连续发送的消息是alloc和init。每个类都有一个alloc类方法,它能够创建一个新的对象,并返还指向该对象的指针。通过alloc创建出来的对象,必须经过初始化才能使用。每个类也都有一个init实例方法,它用来初始化实例。
   ?123456789101112131415#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;}</foundation>
   使用以上方法和发送date消息创建NSDate对象没有区别。NSDate的init方法会将NSDate对象初始化为当前的日期和时间,就像date方法那样。
   nil和id
   在Object-C中,nil是值为0的指针。同时向nil发送消息,什么事情也不会发生。
   当声明指向对象的指针时,通常都会明确地写出相应对象的类,但是在编写程序时,很可能会碰到声明指针时并不知道所指对象的类型,因此,可以使用id类型来表示。
   id student;
   id类型的含义是:可以指向任意类型Object-C对象的指针。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程