OC学习记录1:类方法与实例方法

来源:互联网 发布:软件危机的例子 编辑:程序博客网 时间:2024/06/06 09:55

NSDate *now =[NSDate date];

NSDate为一个类,data是其中的一个类方法,这里将now变量指向了NSDate这个类。[]中第一个是接收方,后一个是选择器。接受方用于接受选择器中的方法,选择器选择方法。


double seconds = [now timeIntervalSinceNow];

这里seconds定义为double型变量,now作为指向NSDate的实例,可以接收选择器中传入的实例方法。


timeIntervalSinceNow

返回距离Since后面的时间的时间,Now可以替换成具时间,例如1970


NSDate *later = [now dateByAddingTimeInterval:100000];

这里dateByAddingTimeInterval的实例方法后面带了一个实参,实参用冒号与实例方法相连。此方法返回现实x秒后的时间。


unsigned long day = [cal ordinalityOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:now];

这里ordinalityOfUnit这个实例方法可以带有三个实参,第一个实参传递NSDayCalendarUnit,第二个实参传递NSMonthCalendarUnit,第三个实参传递指向NSDate类的变量now。简单说就是第一个实参打开日历,第二个实参找到当前月份,第三实参找到天数。但注意这里仍然是一个消息所以接受的还是一个方法。


消息的嵌套发送

前面提到的double seconds =[now timeIntervalSinceNow];语句,在编写代码时是先编写NSDate *now = [NSDate date];语句再使用now作为接收器。使用嵌套方法可以使得程序看起来更加简洁易懂,嵌套的语句为:

double seconds =[ [NSDate date] timeIntervalSinceNow];

系统会按照从内到外的顺序执行嵌套消息,但是嵌套消息有时候会给debug带来麻烦,所以使用的时候要思路清晰。


NSDate *now =[[NSDate alloc] init];

这行语句中有两个必须以嵌套形式发送的消息:alloc和init。总体上这行语句的功能和语句NSDate *now =[NSDate date];一致,alloc的作用是创建一个新的对象,返回指向该对象指针的指针。但是通过alloc所创建的对象必须初始化才能够使用。init的作用就是初始化alloc所创建的对象。对比上面的语句我们可以知道这种方法较为麻烦,上面那一种语句称为便利语句。


nil

在oc中允许向nil指针发送消息,但是没有任何意义,返回值同样。


id delegate

在不知道所声明对象的类的时候可以使用id,id类型可以指向任意oc对象的指针。id后面不需要加*号,默认隐含。

0 0
原创粉丝点击