zoukankan      html  css  js  c++  java
  • Objective-C学习笔记(十九)——对象方法和类方法的相互调用

          事实上在OC的对象方法(减号方法)和类方法(加号方法)并非相互独立的,它们也能够发生千丝万缕的关系,今天我们来研究下它们两者相互调用的问题。该样例还是以People类为基础。

    (一)对象方法调用类方法:

    (1)先在People.h中分别声明两个方法:

    -(void)show;
    
    +(void)showw2;
    
    


    (2)然后在People.m中分别实现两个方法,并在对象方法中调用类方法,调用方式也是用  “类名 方法名”进行。

    -(void)show{
    
        NSLog(@"我是一个对象方法。我被调用了!");
        [People show2];//调用类方法
    }
    
    +(void)show2{
    
        NSLog(@"我是一个类方法,我被调用了!");
    //    [[People alloc] show];
    }
    

    (3)最后在main.m中调用对象方法:

    People *people = [[People alloc] init];//注意没有在main.m中直接调用
            [people show ];
            

    (4)随后的输出结果例如以下。先输出对象方法中的内容,然后输出类方法中的内容,结果符合预期。

    类方法成功在对象方法中被调用。



    (二)类方法调用对象方法

    (1)先在People.h中分别声明两个方法:

    -(void)show;
    
    +(void)showw2;
    
    

    (2)在People.m文件里实现两个方法,并在类方法中调用对象方法,注意是怎样调用的。

    [People alloc]相当于实例化了一个对象。使用该对象调用show对象方法;

    -(void)show{
    
        NSLog(@"我是一个对象方法,我被调用了。");
    }
    
    +(void)show2{
    
        NSLog(@"我是一个类方法,我被调用了!");
        [[People alloc] show];
    }
    

    (3)最后在mian.m中调用类方法show2.

    [People show2];

    (4)输出结果例如以下。先输出类方法中的内容,再输出对象方法中的内容,符合我们的预期:


             总之。减号方法和加号方法的相互调用使我们的代码更为灵活,编程更为方便。


    github主页:https://github.com/chenyufeng1991  。欢迎大家訪问!


  • 相关阅读:
    洛谷-P5743 【深基7.习8】猴子吃桃
    洛谷-P5741 【深基7.例10】旗鼓相当的对手
    洛谷-P5740 【深基7.例9】最厉害的学生
    洛谷-P5739 【深基7.例7】计算阶乘
    jvm中常见的指令笔记
    join()方法的源码分析
    Java中线程状态的各种转换关系
    java构造器遇到父类没有无参构造的分析
    jvm栈和堆
    spring新注解
  • 原文地址:https://www.cnblogs.com/lytwajue/p/6821536.html
Copyright © 2011-2022 走看看