A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 飞扬的青春haha 中级黑马   /  2016-5-17 23:10  /  752 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

&&类方法
1 oc中方法分2种,我们之前学的叫做对象方法,必须使用对象名来使用.所以必须创建一个对象
2 类方法:不依赖于对象,依赖于类,调用通过类名就可以调用.
声明:+(void)clash.
3 调用
1)对象方法必须创建对象,使用对象名才能用.
[对象名 对象方法名]
2)类方法直接使用类名就可以用了
[类名 类方法名]
3 类方法的特点.
1)节约空间:因为类方法的调用不需要创建对象.
            而对象方法的调用首先创建一个对象
2). 提高效率: 类方法的调用.直接找到代码区中的类,找到类中的类方法执行. 对象方法要先通过指针找到对象,再通过对象的isa指针找到类.再找到类中的方法执行.
4. 类方法的局限性
    在类方法中无法直接访问类的属性.
    也不能通过self关键字去调用当前类的对象方法.
    因为类方法的调用不需要创建对象的. 而属性只有对象创建了以后才有.
    所以,类方法在执行的时候,对象有可能还没有呢.对象都没有 如何访问属性呢?
    同样的原理;在类方法执行的时候,还没有对象,而对象方法的调用必须要依赖于对象来调用.
    所以.在类方法中不能直接使用self调用当前类的.对象方法
5注意事项:
1)类方法和对象方法可以重名.
2)对象方法只能通过对象来调用.类方法只能通过类了使用.
3)虽然不能直接访问属性和对象方法,但可以创建对象,然后访问˙这个对象的属性和对象方法.
4)在对象方法中可以直接使用类名来调用类方法.
6 类方法的规范
1). 我们写1个类 就要为这个类提供1个和类名同名的类方法.这个类方法来返回1个纯洁的对象.
纯洁的对象: 对象的属性的值都是默认值.
这个时候,如果想要得到这个类的对象,也可以直接调用这个同名的类方法来创建1个对象.
&&NSString

         + (HMPerson *)person
         {
            HMPerson *p1 = [HMPerson new];
            return p1;
         }
2). 如果希望创建出来的对象的属性的值是由创建者指定的.
那么这个时候,就可以为这个类方法带参数. 在方法内部创建对象. 并初始化对象的属性.返回.
+ (HMPerson *)personWithName:(NSString *)name andAge:(int)age
         {
             HMPerson *p1 = [HMPerson new];
             p1->_name = name;
             p1->_age = age;
             return p1;
         }
8. 对象的创建.
    HMPerson *p1 = [HMPerson new];
    new其实是1个类方法.
    做的事情: 创建对象、初始化对象.
    返回值: 返回创建的这个对象的地址.

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马