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 ...
随机推荐
- mongodb使用1
首先官网下载mongodb放在根目录下.新建db文件夹,在命令行中进入bin路径,然后运行mongod开启命令,同时用--dbpath指定数据存放地点为“db”文件夹 mongod --dbpath= ...
- ofbiz数据库表结构设计(1)- PARTY
ofbiz的精华就在于其数据结构(表结构)的设计.数据结构的通用性也决定了ofbiz几乎可以适用任何企业应用.我们首先来看看PARTY相关的表结构设计. 在ofbiz中,PARTY是个抽象概念,它可以 ...
- 【HDOJ5976】Detachment(贪心)
题意:给定n,要求构造若干个各不相同且和为n的正整数使得它们的乘积最大 T<=1e6,1<=n<=1e9 思路:From https://blog.csdn.net/qq_34374 ...
- 多表的时候怎样在MVC VIEW中显示
原文发布时间为:2011-04-01 -- 来源于本人的百度文章 [由搬家工具导入] Linq join query displayed in MVC view Instead of returnin ...
- [LeetCode] Linked List Cycle II 链表环起始位置
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ...
- [LeetCode] Sudoku Solver 解数独,递归,回溯
Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...
- DBCP连接池与c3p0连接池
1. DBCP连接池
- 04.移植u-boot
1.读readme获取信息 1.1 由Building the Software可知,需修改顶层makefile,指定架构和编译器 ifeq ($(HOSTARCH),$(ARCH)) ...
- Spring Boot学习——Controller的使用
本文主要记录几个注释的使用方法. 1. @Controller : 处理http请求 2. @RequestMapping : 配置URL映射 3. @RestController : 组合注解,sp ...
- ubuntu 15.10 64bit 下 steam无法启动
首先查看steam日志,在/tmp/dumps/下,以“用户名_output.txt”命名. $ cat /tmp/dumps/liuxu_output.txt Running Steam on ub ...