本帖最后由 chunhuayun 于 2015-10-4 17:49 编辑
一、类方法学习引入
1、类方法概述 【实例方法】就是一个方法,它在类的一个具体实例的范围内执行,也就是说,在你调用一个实例方法前,必须先创建一个类的对象。 【类方法】不需要创建一个实例 +开头表示类方法,就是类调用方法,不依赖于任何对象的方法 -开头表示对象方法 ,只能是对象可调用。
2、类方法的调用 不同于实例方法的[对象名 方法名] 其格式为: [类名 方法名]
例如: - #import <Foundation/Foundation.h>
- @interface Calculator : NSObject
- //返回两数相加值
- +(int) add:(int)a and:(int)b;
- @end
-
- @implementation Calculator
-
- +(int)add:(int)a and:(int)b{
- return a + b;
- }
- @end
- int main(int argc, const char * argv[])
- {
-
- @autoreleasepool {
-
- int result = [Calculator add:2 and:3];
- printf("result = %d",result);
- }
- return 0;
- }
复制代码
打印结果: result = 5
【类方法的好处】 1)不需要创建实例,也就是不需要分配内存空间,因此可以节省很多内存空间。 2)类方法可以与实例方法同名,而且互不影响 3)类方法可以从父类继承,子类可以重写类方法 4)类方法和实例方法一样在interface中声明 5)类方法只能通过类名来调用,对象方法只能通过对象来调用
二、类方法易犯错误
1、类方法的优点 1)节省内存空间 2)提高了效率 3)作为工具方法
2、类方法的易犯错误 1)在类方法中使用了类的成员变量。这样做是会报错的。
3、类方法和对象方法的比较 1)对象方法 以“-”号开头 可以调用类成员变量 需要类的实例(对象)调用 可以调用当前对象的其他方法,或其他对象的方法 可以使用self 2)类方法 以“+”号开头 不可以调用类成员变量 用类名直接调用 可以调用其他对象的方法(是通过将对象作为参数传递进来,也可以创建一个对象) 可以调用其他类方法(注意不是对象方法),但是不能调用自身(否则会进入死循环) A>可以使用本类类名或其他类名调用
|