------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!
第一讲 类方法的概述
在OC中我们可以申明两种方法,一种是实例方法一个对象(个人理解为对象方法,严格来说类也是一个对象,但是为方便理解完全可以认为是对象方法),一种是类方法。实例方法就是一个以 - 号开头的方法,它在类的一个具体实例范围内执行,也就是说,在你调用一个实例方法前,你必须先创建类的一个实例。类方法相对而言更简单一些,它没有实例,类方法是以+号开头的方法,类方法就是类调用的方法,不依赖与任何对象方法。其实简单点说就是类方法必须由类来调用,而对象方法必须由对象方法来调用。
类方法调用格式:[类名 方法名];
下面我们来看看对象调用方法和类调用方法有什么不同:
首先来看对象调用方法:
//Person类
//方法的申明
-(void)run;
//方法的实现
-(void)run{ NSLog(@"跑");}
//对象调用必须先创建一个实例对象
Person *p=[Person new];
//调用方法[p run];
再来看类调用方法:
//Person类
//方法的申明
+(void)run;
+(void)run{ NSLog(@"跑");}
//调用方法
[Person run];
</pre><pre>
从上面的示例我们可以很明显的看到不同之处。
第二讲 类方法的注意事项
1、类方法可以和实例方法同名,这个并不会影响使用,实例方法有实例对象访问调用,类方法通过类来访问调用,不会有相互交叉影响,加减符号已经明确的甄别了他们的调用方式。
2、类方法可以从父类当中继承过来,子类可以重写类方法,在Xcode编译器下,有许多方法是编译器自带的,比如description类方法,它就可以在子类中重写,以达到我们期望的效果!
3、类方法和实例方法一样在interface里申明在impelementation里实现
4、类方法只能被向类发送类方法消息才会被执行,向实例对象发送类方法不能被执行。
5、在类方法中使用self,这个self执行的类对象class object而不是实例对象instance object。第三讲 类方法的优点及其易犯错误
类方法相对实例方法有很多的优点:
1、节省了内存空间。
2、 提高了工作效率。
3、 作为工具方法。
在不需要实例对象的情况下,使用类方法会省去很多步骤,这是它的优势所在。易犯错误:在类方法中使用了类的成员变量。
@impementation Person
+(void) run{
NSLog(@"正在吃%@",_food)//这是错误的,程序根本不能执行,会报错
}