08-OC的类方法
OC中的方法分为对象方法和类方法,这里介绍类方法。
1、类方法
概念:直接可以用类名来执行(调用)的方法(类本身会在内存中占据存储空间,存储空间里面有类方法列表和对象方法列表)。
注:不是只有类方法列表存储在类的空间,对象方法列表也存储在类的空间。
很好理解,因为不管是类方法还是对象方法,它们的声明都在@interface @end之间 ;实现都在@implementation @end之间。
规则:1、以加号 + 开头;
2、所有数据类型(返回值、参数)都必须写在小括号()里面,而且只有数据类型可以写在小括号()里面;
3、方法名遵循驼峰原则;
4、如果没有参数,方法名后面什么都不写,例如 + (void)lookMyPhone;
5、一个参数对应一个冒号:,冒号:也是方法名的一部分;
例如:+ (void)sendMessage:(char *)message withPhoneNumber:(char *)number;
方法名是 sendMessage:withPhoneNumber:
6、加号 + 不是方法名的一部分。
7、类方法只有类名可以调用,对象不能调用。
8、类方法不能访问实例变量(成员变量)。
9、类方法可以调用自己的类方法,但不能调用自己,会出现死循环。
10、类方法可以作为工具方法。
11、类方法可以和对象方法重名(即方法名完全一样),但是二者却是两个完全不同的方法,用方法前面的+ -号区别。
2、按照有无返回值和有无参数给对象方法分类
-
- 无参无返回值类方法
- 无参有返回值类方法
- 有参无返回值类方法
- 有参有返回值类方法
(1)无参无返回值类方法
例如:+ (void)lookMyPhone;//查看电话信息
(2)无参有返回值类方法
例如:+ (char *)receiptMessage;//接收短信
(3)有参无返回值类方法
例如:+ (void)callPhone:(char *)Phonenumber;//拨电话号
+ (void)sendMessage:(char *)message withNumber:(char *)number;//给一个号码发短信
(4)有参有返回值类方法
例如:+ (int)sumOfNum1:(int)num1 andNum2:(int)num2;//计算两个数的和
3、类方法的使用场合
(1)类方法只能由由类(类名)来调用。
类方法可以调用自己的类方法,但不能调用自己,会出现死循环。
(2)当方法中不需要访问实例变量(成员变量)的时候,尽量使用类方法。
4、使用类方法的好处
(1)可以节省内存空间,因为不用创建对象;
(2)可以提高效率
注意:当方法中需要访问实例变量(成员变量)的时候,一定不能使用类方法,其他情况都尽量使用类方法。