IOS基础入门OC语言Xcode Day08笔记:类方法

1、OC中的方法分为两种
1)对象方法/实例方法
如果想要调用对象方法就必须要先创建对象,通过对象名来调用;
2)类方法
类方法的调用不依赖于对象,如果要调用类方法,不需要去创建对象,而是直接通过类名来调用。

2、声明
1)对象方法的声明:
对象方法声明使用 - 号
- (返回值类型) 方法名;
- (void) run;

2)类方法的声明:
类方法声明使用 + 号
+ (返回值类型) 方法名;
+ (void)run;

3、调用
1)对象方法:先创建对象,通过对象名来调用;
2)类方法:不依赖于对象,如果要调用类方法,不需要去创建对象,而是直接通过类名来调用。
[类名 类方法名];

4、分析过程
1)类方法的特点
a、节约空间:因为调用类方法不需要创建对象,这样就节约了空间
b、提高效率:因为调用类方法不需要拐弯,直接找到类,直接执行类中的类方法

5、在类方法中不能直接访问属性
1)属性是在对象创建的时候,跟随着对象一起创建在对象之中;
2)类第一次被访问的时候,会做类加载,是把类的代码存储在代码段。
因为属性只有在对象创建的时候才会创建在对象之中,
而类方法在执行的时候,有可能还没有对象,对象都没有,你访问个毛的属性
虽然不能直接访问属性,但是我们可以在类方法中创建一个对象,访问这个对象的属性

6、在类方法中也不能通过self直接调用当前类的其他对象方法
因为对象方法只能通过对象调用,而此时没有对象

7、在对象方法中,可以直接调用类方法

8、什么时候可以将方法定义为类方法
如果方法不需要直接访问属性,也不需要直接调用其他的对象方法,那么我们就可以将这个方法定义为类方法,这样就节约空间、提高效率。

9、关于类方法的规范
1)如果我们写一个类,那么就要求为这个类提供一个和类同名的方法
这个方法创建一个最纯洁的对象返回

+(Person *)person
{
	Person *p1 = [Person new];
	return p1;
}

2)如果你希望创建的对象属性的值由调用者指定,那么就为这个类方法带参数。
类名With:…

Person *p1 = [Person personWithName:@"jack" andAge:19];

猜你喜欢

转载自blog.csdn.net/wenyu_Saitama/article/details/107023668