IOS开发笔记11-Object-C中的传递消息
2016-12-09 08:09
363 查看
转载请标明出处:
http://blog.csdn.net/hai_qing_xu_kong/article/details/53534039
本文出自:【顾林海的博客】
以上程序中dateByAddingTimeInterval:方法接受新的NSDate实例和初始NSDate实例的差值。方法带实参的时候,冒号是构成方法名的一个重要部分。
接下来看看带多个实参的例子:
NSDate对象无法计算某个日期是相应月份中的第几日,因此我们需要NSCalendar对象,发送一个currentCalendar消息给NSCalendar类来创建一个NSCalendar实例。NSCalendar有一个ordinalityOfUnit:inUnit:forDate: 方法 ,通过它可以获取更多关于NSDate的信息,因此需要传入三个实参,所以该方法名包含三个冒号。
什么叫做消息的嵌套发送,可以看下面的例子:
唯一必须以嵌套的形式连续发送的消息是alloc和init。每个类都有一个alloc类方法,它能够创建一个新的对象,并返还指向该对象的指针。通过alloc创建出来的对象,必须经过初始化才能使用。每个类也都有一个init实例方法,它用来初始化实例。
使用以上方法和发送date消息创建NSDate对象没有区别。NSDate的init方法会将NSDate对象初始化为当前的日期和时间,就像date方法那样。
当声明指向对象的指针时,通常都会明确地写出相应对象的类,但是在编写程序时,很可能会碰到声明指针时并不知道所指对象的类型,因此,可以使用id类型来表示。
id student;
id类型的含义是:可以指向任意类型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对象的指针。
相关文章推荐
- IOS iOS本地推送---常用开发中,通过消息传递信息
- 探索iOS开发中的消息传递机制
- iOS开发——使用delegate进行消息传递
- IOS开发笔记16-Object-C中的属性
- opencv-ios开发笔记11 亮度和色温调节
- 【学习笔记之ios开发】1.Object-C语法概述
- iOS开发-Day28-UI自定义控件&消息传递&事件传递机制
- iOS开发笔记8:Remote Notification远程消息推送处理
- IOS开发笔记11-指针(上)
- IOS开发笔记13-Object-C中的NSString
- iOS开发笔记-object-c之 @[], @{}
- IOS开发笔记(2)页面之间传递数据几种方式比较
- iOS开发笔记11--NO architectures to compile for (ONLY_ACTIVE_ARCH=YES,active arch=x86_64
- iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging
- VC++ 学习笔记(11)——传递自定义消息
- IOS开发笔记之应用间的跳转和数据传递
- iOS开发笔记14--iPhone消息推送机制实现与探讨
- 2013斯坦福大学iOS应用开发学习笔记 11 Table View and iPad
- IOS开发笔记10-Object-C中的对象
- iOS开发-通过btn传递两个实例对象 firstObject和secondObject