黑马程序员技术交流社区
标题: OC学习笔记之类的学习 [打印本页]
作者: chunhuayun 时间: 2015-10-4 17:47
标题: OC学习笔记之类的学习
本帖最后由 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>可以使用本类类名或其他类名调用
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |