事实上在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  。欢迎大家訪问!

Objective-C学习笔记(十九)——对象方法和类方法的相互调用的更多相关文章

  1. python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法

    python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...

  2. (C/C++学习笔记) 十九. 模板

    十九. 模板 ● 模板的基本概念 模板(template) 函数模板:可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计. 语法: template <<模 ...

  3. Java基础学习笔记十九 IO

    File IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再 ...

  4. Java基础学习笔记十九 File

    IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据 ...

  5. JavaScript权威设计--跨域,XMLHttpRequest(简要学习笔记十九)

    1.跨域指的是什么? URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a. ...

  6. python 学习笔记十九 django深入学习四 cookie,session

    缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...

  7. angular学习笔记(十九)-指令修改dom

    本篇主要介绍angular使用指令修改DOM: 使用angular指令可以自己扩展html语法,还可以做很多自定义的事情.在后面会专门讲解这一块的知识,这一篇只是起到了解入门的作用. 与控制器,过滤器 ...

  8. Java学习笔记十九:Java中的访问控制修饰符

    Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...

  9. yii2源码学习笔记(十九)

    view剩余代码 /** * @return string|boolean the view file currently being rendered. False if no view file ...

随机推荐

  1. UVA 1619/POJ2796 滑窗算法/维护一个单调栈

    Feel Good Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 12409   Accepted: 3484 Case T ...

  2. webpack简单使用

    1 首先npm init 建立package.json文件  npm init 2 然后全局安装webpack                      npm install webpack -g ...

  3. UVa 11234 The Largest Clique

    找最长的连接的点的数量.用tarjan缩点,思考可知每一个强连通分量里的点要么都选,要么都不选(走别的路),可以动规解决. #include<iostream> #include<c ...

  4. Qualcomm MPM introduction

    在 Qualcomm chip 裡有一個 hardware block 名為 MPM. 在 RPM CPU halts 後,MPM 會保持在 on 的狀態用來處理 全系統 sleep process ...

  5. mac使用matplotlib

    mac系统,安装了matplotlib之后, 导入matplotlib.pyplot的时候报错 RuntimeError: Python is not installed as a framework ...

  6. wxPython中文教程 简单入门加实例

    wx.Window 是一个基类,许多构件从它继承.包括 wx.Frame 构件.技术上这意味着,我们可以在所有的 子类中使用 wx.Window 的方法.我们这里介绍它的几种方法: * SetTitl ...

  7. SQL存储过程基础

    什么是存储过程呢?存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令. 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句. 那为什么要用存储过程呢?1.存储过程只在创造时进行编译, ...

  8. es6 解构写法:给变量取别名

    在变量后面加一个: var {f: foo} = {f: 5}; foo == 5 // true

  9. Web模糊测试工具Powerfuzzer

    Web模糊测试工具Powerfuzzer   Powerfuzzer是Kali Linux自带的一款Web模糊测试工具.该工具基于各种开源模糊测试工具构建,集成了大量安全信息.该工具高度智能化,它能根 ...

  10. Graphs (Cakewalk) 1 B - medium

    Discription Bear Limak examines a social network. Its main functionality is that two members can bec ...