1,OC中的方法分为两种
1),对象方法/实例方法 我们之前学习的方法,都是对象方法 如果要调用,必须创建对象用对象名访问
2),类方法 类方法的调用不依赖于对象 如果要调用类方法 不需要创建对象 直接使用类名来调用
2,声明
1),对象方法的声明 对象方法声明使用 - 号 - (void)sayHi;
2),类方法的声明: 类方法声明使用 + 号 有声明有实现 位置都是一样的
3,调用
1),对象方法:先创建对象,再通过对象名来调用
2),类方法:不需要创建对象,直接使用类名来调用 而不是直接使用类名来调用
[类名 类方法];
4,分析类方法和对象方法的调用过程
类方法的优点 a,节省空间:因为调用类方法不需要创建对象 b,提高效率:因为调用类方法不需要拐弯抹角,直接找到类,执行类方法
5,在类方法中不能直接访问属性
1),属性是在对象创建的时候,跟随着对象一起创建在对象之中
2),类在第一次访问的时候,只是把代码放进代码段,并没有创建属性
因为属性只有在对象创建的时候,才会创建在对象之中,而类方法在执行的时候, 有可能还没有对象,所以不能在类方法中直接访问属性
虽然不能直接访问属性,但是可以在类方法中创建一个对象,访问这个对象的属性
6,在类方法中也不能通过self直接调用当前类的其他对象方法,因为对象方法只能通过对象来调 需要调用对象方法的时候,创建对象,通过对象来调用对象方法。
7,在对象方法中可以直接使用类名调用类方法 不能使用self 也可以直接使用其他对象方法 一般用self来调用
8,什么时候我们可以将方法定义为类方法呢
如果方法中不需要访问属性和调用其他对象方法,就设置成类方法 这样就会节约空间,提高效率
9,关于类方法的规范,
1),如果我们写一个类,那么就要求为这个类提供一个和类同名的类方法 这个方法创建一个最纯洁的对象返回(属性都是默认值)
因为苹果和高手写的类都遵守这个规范。
2),如果你想要得到创建的对象的属性的值有调用者指定 那么就让这个方法带参数 类名WithXXX : 。。。。。。
|