O-C相关04:类方法的概述与定义和调用

类方法的概述与定义和调用

1, 类方法的概述

类方法(class method)在其他编程语言中常常称为静态方法(例如 Java 或 C# 等). 与实例方法不同的是,类方法只需要使用类名即可调用, 不需要引用对象, 也就不需要创建对象了. 而实例方法必须是先将对象(实例)创建出来, 再利用对象来调用方法.

OC 中使用 "+" 表示类方法, 使用 "-" 表示实例方法.

类方法与实例方法的定义比较:

2, 类方法的定义

3, 使用类方法的优势分析:

-> 类方法在代码区, 因此使用不需要创建对象

-> 频繁使用类方法提高效率

-> 类方法会一直占用内存

4,类方法的注意事项

1) 类方法与实例方法允许重名

2) 类方法可以从父类继承, 子类允许重写

3) 类方法与实例方法一样, 在 @interface 中声明, 在 @implementation 中实现

4)类方法只允许给类发消息才允许调用

5) 类方法中的 self 不再是实例对象, 而是该类的类对象(Class)

5, 类方法易犯的错误

1) 在类方法中使用了成员变量

2)在类方法中调用了实例方法

6.类方法与实例方法比较,从类方法与实例方法的比较来看, 如果一个方法不需要使用成员变量, 就可以使用类方法. 或者将类方法一般作为工具方法来使用.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-18 03:54:18

O-C相关04:类方法的概述与定义和调用的相关文章

Objective-C学习笔记(十八)——对象方法和类方法的声明,定义及调用

在程序设计中,函数的使用无疑大大简化了代码的编写,提高代码运行的效率,减少重复代码.所以现在我们来详细研究一下方法.本例子还是以People类为例. (一)代码一: (1)先在People.h中声明一个方法,该方法为对象方法,也就是普通方法,前面是一个减号. -(void)show; (2)在People.m中实现该方法: -(void)show{ NSLog(@"我是一个对象方法,我被调用了!"); } (3)在main.m中调用该方法: People *people = [[Peo

05 数组概述和定义格式说明

class TestX { public static void main(String[] args) { /* int []arr={1,2,3}; int []arr1=new int [2];/这是一位数组定义的两种方法,静态的可以赋值,动态的不能再定义的时候赋值, / int[][]a={{1,2},{2,3,}}; int [][]a1=new int[2][2]; int [][]a2=new int [2][];//动态定义必须用new新建对象,静态的都不需要用new, a2[0

C++ Primer 学习笔记_65_面向对象编程 --概述、定义基类和派生类

面向对象编程 --概述.定义基类和派生类 引言: 面向对象编程基于的三个基本概念:数据抽象.继承和动态绑定. 在C++中,用类进行数据抽象,用类派生从一个类继承另一个:派生类继承基类的成员.动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数. 继承和动态绑定在两个方面简化了我们的程序:[继承]能够容易地定义与其他类相似但又不相同的新类,[派生]能够更容易地编写忽略这些相似类型之间区别的程序. 面向对象编程:概述 面向对象编程的关键思想是多态性(polymorphism)

C++ Primer 学习笔记_65_面向对象编程 -概述、定义基类跟派生类

面向对象编程 --概述.定义基类和派生类 引言: 面向对象编程基于的三个基本概念:数据抽象.继承和动态绑定. 在C++中,用类进行数据抽象,用类派生从一个类继承另一个:派生类继承基类的成员.动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数. 继承和动态绑定在两个方面简化了我们的程序:[继承]能够容易地定义与其他类相似但又不相同的新类,[派生]能够更容易地编写忽略这些相似类型之间区别的程序. 面向对象编程:概述 面向对象编程的关键思想是多态性(polymorphism)

JavaScript之基础-10 JavaScript 正则表达式(概述、定义正则、RegExp对象、用于模式匹配的String方法)

一.JavaScript 正则表达式概述 正则表达式概述 - 正则表达式(Regular Expression): 由一些普通字符和特殊字符组成的,用以描述一种特定的字符规则的表达式 - 正则表达式常用于在一段文本中搜索.匹配或替换特定形式的文本.如:词语出现频率统计.验证字符串是否符合邮件格式.屏蔽一篇帖子中的限制性词语等 正则表达式初体验 - 验证用户输入的手机格式是否合法 二.JavaScript 定义正则表达式 普通字符 - 所有的单个大小写字母.数字都是一个正则表达式,用以匹配单个字符

04 循环结构概述和for语句的格式及其使用

04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do-while B:循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } C执行流程: a:执行初始化语句 b:执行判断条件语句,看其返回值是true还是false 如果是true,就继续执行 如果是false,就结束循环 c:执行循环体语句; d:执行循环后的操作表达式 e:回到B继续. D:案例演示 在控制台输出10次"hellow

04循环结构概述和for语句的格式及其使用

* A:循环结构的分类 * for,while,do...while * B:循环结构for语句的格式:* for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; }* C执行流程: * a:执行初始化语句 * b:执行判断条件语句,看其返回值是true还是false * 如果是true,就继续执行 * 如果是false,就结束循环 * c:执行循环体语句; * d:执行循环后的操作表达式 * e:回到B继续.* D:案例演示 * 在控制台输出10次"helloworld"

面向对象程序设计——概述,定义基类和派生类,虚函数

一.OOP:概述 面向对象程序设计的核心思想是数据抽象.继承和动态绑定.通过使用数据抽象,我们可以将类的接口和实现分离:使用继承,可以定义相似的类型并对其相似关系建模:使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象. 1)继承 通过继承联系在一起的类构成一种层次关系.通常在层次关系的根部有一个基类,其他类则直接或间接地从基类继承而来,这些继承得到的类称为派生类.基类负责定义在层次关系中所有类共同拥有的成员,而每个派生类定义各自的成员. 在C++语言中,基类将类型相

安装Ubuntu 16.04时出现:没有定义根文件系统,请到分区菜单修改

在安装Ubuntu 16.04时,尤其是选项空闲硬盘新建分区安装时,容易出现这种情况,这个是由于没有配置挂载点导致的,解决方法如下: 在挂在点输入“/”. 原理: Linux和Windows的文件系统不一样,在Linux里没有类似C盘D盘的概念,全是以文件夹的方式. 一般情况下在Linux里至少要建立两个分区: /(根分区)(必须建立) /swap(交换分区)(如果你内存够大,比如32G内存就不用建立了) 还可以分出更多的分区以便把系统不同部分的内容分别保存. 如,一般除根分区外至少会建立四个分