类方法和实例方法的区别
实例方法在调用前,你必须首先创建类的一个实例
而类方法的调用,不需要创建类的对象,总之,类的调用,不依赖于任何对象
类方法的调用
语法
[类名称 类方法名称]
类方法使用注意事项:
1)类方法可以和实例方法同名,这个并不影响使用,实例方法由实例对象访问调用,类方法要通过类访问调用,不会有交叉相互影响。
@interface Test : NSObject
//声明对象方法
- (void)method;
//声明类方法
+ (void)method;
@end
@implementation Test
- (void)method {
NSLog(@"instance Method");
}
+ (void)method {
NSLog(@"class Method");
}
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Test * object = [Test new];
//调用对象方法
[object method];
//调用类方法
[Test method];
}
return 0;
}
运行结果如下:
2015-08-04 13:00:10.406 04-类方法的注意事项[509:26514] instance Method
2015-08-04 13:00:10.407 04-类方法的注意事项[509:26514] class Method
2)类方法也可以是从父类继承而来,子类可以重写类方法,如description类方法就可以在子类 里重新定义这个方法。
3)类方法和实例方法一样在interface里声明,在implementation里实现。
4)类方法只能被类调用执行,向实例对象发送类方法是不能被触发执行的。
5)在类方法里使用了self,这个self执行的类对象class object而不是实例对象instance object。
类方法易犯的错误
在类方法中使用了类的成员变量
// 通过类方法实现两个数的平均值
+ (float)avg{
return _result / 2; //_result 是实例变量
}
注意类的方法中不能使用实例变量
类方法应用场景
1、类方法的优点:
1)节省内存空间
2)