类方法与对象方法
- 类方法与对象方法的基本区别
- 对象方法的声明方法为
- (返回类型)方法名;- (void)eat; - 对象方法在使用时必须先实例化对象,再通过对象调用对象方法。
Person *p1 = [Person new]; [p1 eat]; //使用Person类实例化对象p1,通过p1调用对象方法eat - 类方法的声明方式为
+ (返回类型)方法名;+ (void)run; - 类方法在使用时不需要实例化对象,可以直接通过类名调用
[Person run]; //使用Person类调用类方法run
- 对象方法的声明方法为
类方法的特点
- 类方法更加节约空间,因为类方法不需要创建对象。
- 类方法能够提高效率。
- 类方法不能直接访问类属性,但可以在类方法中创建对象,访问创建的对象的属性,同理类方法中不能通过
self的方式调用其他对象方法。 - 在对象方法中可以直接调用类方法。
类方法的规范
- 当我们编写一个类时,我们需要为这个类提供一个和类名同名的类方法,这个类方法中需要创建一个初始化的对象并返回。
+ (instancetype)person{ return [Person new]; }
何时应该使用类方法
- 当一个方法不需要直接访问属性,也不需要调用其他对象方法,这样的方法我们可以将其定义为类方法,从而节省空间提高效率。