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对象的指针。
IOS开发笔记11-Object-C中的传递消息相关推荐
- IOS开发笔记17-Object-C中的继承
转载请标明出处:[顾林海的博客] 个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! ##前言 在前面的程序Person.h文件中可以看到,Person继承了NSObj ...
- IOS开发笔记16-Object-C中的属性
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/54667858 本文出自:[顾林海的博客] 前言 前一篇笔记记录了自定类 ...
- IOS开发笔记13-Object-C中的NSString
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53572258 本文出自:[顾林海的博客] 前言 NSString是Ob ...
- IOS开发笔记12-Object-C中的对象与内存
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53556243 本文出自:[顾林海的博客] 前言 Object-C的内存 ...
- IOS开发笔记10-Object-C中的对象
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53513004 本文出自:[顾林海的博客] 前言 关于c语言的基础部分已 ...
- iOS开发笔记-两种单例模式的写法
iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h"st ...
- IOS开发笔记之推广安装(用网页判断是否安装App)
IOS开发笔记之推广安装(用网页判断是否安装App) 在做App推广的时候,我们经常会用到网页链接下载,亦或是一张二维码,最常见的做法就是将App在iTunes中的下载链接嵌入,当用户扫描或者点击网页 ...
- IOS开发笔记之常用的第三方库(太多了。)
图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. ...
- iOS开发笔记(IOS7回归)
<---点击左上角目录,可以快速查找这里是否有你遇到的问题条目<--- 1,iOS中如何设置项目/文件是否支持ARC 旧工程配置arc方案: 1,直接在targets->build ...
最新文章
- css学习笔记3--灵活的背景定位
- numpy的random
- python类百度百科_Python抓取百度百科数据
- 大整数相加链表实现(Add Two Numbers)
- php序列化函数输入0存不了,php序列化函数的区别
- 三十岁左右的你正处于什么状态?
- nodejs pm2的简单应用
- 程序员面试金典——4.7最近公共祖先
- Vue.js如何搭建本地dev server
- 2022电工杯B题思路模型分析
- geotoolkit 测井曲线显示时间、深度双刻度
- 蝶式套利(butterfly spread)
- 基于微信小程序 校园跑腿小程序毕业设计毕设开题报告参考功能
- 保定2021高考学校成绩查询,2021年保定高考成绩排名查询,成绩什么时候可以查询...
- SRP Batcher:提升您的渲染性能
- 小赛毛游C记-初识C语言(2)
- 你应该具有的富人思维
- Gentoo USE参数清单中文详解{转}
- 用MATLAB绘制高斯分布曲线
- Servlet session: 用session实现简单 购物车