1. OC中的方法分为两种.
1).对象方法/实例方法:
我们之前学习的方法就叫做对象方法. 如果想要调用对象方法就必须要先创建对象通过对象名来调用.
2).类方法.
类方法的调用不依赖于对象.如果要调用类方法不需要去创建对象.而是直接通过类名来调用.
2. 声明.
1).对象方法的声明:
对象方法声明使用 -号
- (返回值类型)方法名;
- (void)sayHi;
2).类方法的声明:
类方法声明使用 +号.
+ (返回值类型)方法名;
和对象方法的声明实现除了+和-其他的都是一样的
3.调用.
1).对象方法: 先创建对象 再通过对象名来调用.
2).类方法: 不需要通过对象名来调用 所以如果要调用类方法不需要创建对象.
而是直接使用类名来调用
[类名类方法名];
4. 类方法和对象方法的调用过程.
类方法的特点
1).节约空间: 因为调用类方法不需要创建对象. 这样就节约了空间.
2).提高效率: 因为调用类方法不需要拐弯 直接找到类 直接执行类中的类方法.
5. 在类方法中不能直接访问属性.
1).属性是在对象创建的时候.跟随着对象一起创建在对象之中.
2).类第1次被访问的时候,会做类加载.是把类的代码存储在代码段
因为属性只有在对象创建的时候才会创建在对象之中.
而类方法在执行的时候.有可能还没有对象.对象都没有 就不能访问属性.
虽然不能直接访问属性.但是我们可以在类方法中创建1个对象访问这个对象的属性.
6.注意
在类方法中也不能通过self直接调用当前类的其他的对象方法
因为对象方法只能通过对象来调用而这个时候没有对象.
在对象方法中可以直接调用类方法.
7. 什么时候我们可以将方法定义为类方法呢?
如果方法不需要直接访问属性也不需要直接调用其他的对象方法.
那么我们就可以将这个方法定义为类方法
这样就节约空间 提高效率.
8. 关于类方法的规范.
1).如果我们写1个类,那么就要求为这个类提供1个和类名同名的类方法.
这个方法创建1个最纯洁的对象返回.
因为苹果和高手写的类都遵守这个规范.
2).如果你希望创建爱的对象的属性的值由调用者指定那么就为这个类方法带参数.
类名WithXXX: ......