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 。欢迎大家訪问!
Objective-C学习笔记(十九)——对象方法和类方法的相互调用的更多相关文章
- python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法
python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...
- (C/C++学习笔记) 十九. 模板
十九. 模板 ● 模板的基本概念 模板(template) 函数模板:可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计. 语法: template <<模 ...
- Java基础学习笔记十九 IO
File IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再 ...
- Java基础学习笔记十九 File
IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据 ...
- JavaScript权威设计--跨域,XMLHttpRequest(简要学习笔记十九)
1.跨域指的是什么? URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a. ...
- python 学习笔记十九 django深入学习四 cookie,session
缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...
- angular学习笔记(十九)-指令修改dom
本篇主要介绍angular使用指令修改DOM: 使用angular指令可以自己扩展html语法,还可以做很多自定义的事情.在后面会专门讲解这一块的知识,这一篇只是起到了解入门的作用. 与控制器,过滤器 ...
- Java学习笔记十九:Java中的访问控制修饰符
Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...
- yii2源码学习笔记(十九)
view剩余代码 /** * @return string|boolean the view file currently being rendered. False if no view file ...
随机推荐
- UVA 1619/POJ2796 滑窗算法/维护一个单调栈
Feel Good Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 12409 Accepted: 3484 Case T ...
- webpack简单使用
1 首先npm init 建立package.json文件 npm init 2 然后全局安装webpack npm install webpack -g ...
- UVa 11234 The Largest Clique
找最长的连接的点的数量.用tarjan缩点,思考可知每一个强连通分量里的点要么都选,要么都不选(走别的路),可以动规解决. #include<iostream> #include<c ...
- Qualcomm MPM introduction
在 Qualcomm chip 裡有一個 hardware block 名為 MPM. 在 RPM CPU halts 後,MPM 會保持在 on 的狀態用來處理 全系統 sleep process ...
- mac使用matplotlib
mac系统,安装了matplotlib之后, 导入matplotlib.pyplot的时候报错 RuntimeError: Python is not installed as a framework ...
- wxPython中文教程 简单入门加实例
wx.Window 是一个基类,许多构件从它继承.包括 wx.Frame 构件.技术上这意味着,我们可以在所有的 子类中使用 wx.Window 的方法.我们这里介绍它的几种方法: * SetTitl ...
- SQL存储过程基础
什么是存储过程呢?存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令. 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句. 那为什么要用存储过程呢?1.存储过程只在创造时进行编译, ...
- es6 解构写法:给变量取别名
在变量后面加一个: var {f: foo} = {f: 5}; foo == 5 // true
- Web模糊测试工具Powerfuzzer
Web模糊测试工具Powerfuzzer Powerfuzzer是Kali Linux自带的一款Web模糊测试工具.该工具基于各种开源模糊测试工具构建,集成了大量安全信息.该工具高度智能化,它能根 ...
- Graphs (Cakewalk) 1 B - medium
Discription Bear Limak examines a social network. Its main functionality is that two members can bec ...