转载请标明出处:
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对象的指针。

IOS开发笔记11-Object-C中的传递消息相关推荐

  1. IOS开发笔记17-Object-C中的继承

    转载请标明出处:[顾林海的博客] 个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! ##前言 在前面的程序Person.h文件中可以看到,Person继承了NSObj ...

  2. IOS开发笔记16-Object-C中的属性

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/54667858 本文出自:[顾林海的博客] 前言 前一篇笔记记录了自定类 ...

  3. IOS开发笔记13-Object-C中的NSString

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53572258 本文出自:[顾林海的博客] 前言 NSString是Ob ...

  4. IOS开发笔记12-Object-C中的对象与内存

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53556243 本文出自:[顾林海的博客] 前言 Object-C的内存 ...

  5. IOS开发笔记10-Object-C中的对象

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53513004 本文出自:[顾林海的博客] 前言 关于c语言的基础部分已 ...

  6. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h"st ...

  7. IOS开发笔记之推广安装(用网页判断是否安装App)

    IOS开发笔记之推广安装(用网页判断是否安装App) 在做App推广的时候,我们经常会用到网页链接下载,亦或是一张二维码,最常见的做法就是将App在iTunes中的下载链接嵌入,当用户扫描或者点击网页 ...

  8. IOS开发笔记之常用的第三方库(太多了。)

    图像: 1.图片浏览控件MWPhotoBrowser  实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. ...

  9. iOS开发笔记(IOS7回归)

    <---点击左上角目录,可以快速查找这里是否有你遇到的问题条目<--- 1,iOS中如何设置项目/文件是否支持ARC 旧工程配置arc方案: 1,直接在targets->build ...

最新文章

  1. css学习笔记3--灵活的背景定位
  2. numpy的random
  3. python类百度百科_Python抓取百度百科数据
  4. 大整数相加链表实现(Add Two Numbers)
  5. php序列化函数输入0存不了,php序列化函数的区别
  6. 三十岁左右的你正处于什么状态?
  7. nodejs pm2的简单应用
  8. 程序员面试金典——4.7最近公共祖先
  9. Vue.js如何搭建本地dev server
  10. 2022电工杯B题思路模型分析
  11. geotoolkit 测井曲线显示时间、深度双刻度
  12. 蝶式套利(butterfly spread)
  13. 基于微信小程序 校园跑腿小程序毕业设计毕设开题报告参考功能
  14. 保定2021高考学校成绩查询,2021年保定高考成绩排名查询,成绩什么时候可以查询...
  15. SRP Batcher:提升您的渲染性能
  16. 小赛毛游C记-初识C语言(2)
  17. 你应该具有的富人思维
  18. Gentoo USE参数清单中文详解{转}
  19. 用MATLAB绘制高斯分布曲线
  20. Servlet session: 用session实现简单 购物车

热门文章

  1. 记录一下增加标定评价标准的过程
  2. JavaScript获取浏览器的显示区域大小信息
  3. Spark PruneDependency 依赖关系 RangePartitioner
  4. Django restfulframework 开发相关知识 整理
  5. linux 命令之 kill
  6. 迁移到云:渐进但不可逆转
  7. vmware克隆server2008R2造成SID冲突
  8. 码云机房今晨出现网络故障,已经恢复
  9. PHP之使用网络函数和协议函数
  10. 企业运维之域控篇(十)--SERVER 2003 迁移到 SERVER 2008 (异机)