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)可以提高效率

注意:当方法中需要访问实例变量(成员变量)的时候,一定不能使用类方法,其他情况都尽量使用类方法。  

人生之路,不忘初心,勿忘始终!
原文地址:https://www.cnblogs.com/xdl745464047/p/3997066.html