Objective-C里面既有实例方法也类方法。类方法(Class Method) 有时被称为工厂方法(Factory Method)或者方便方法(Convenience method)。工厂方法的称谓明显和一般意义上的工厂方法不同,从本质上来说,类方法可以独立于对象而执行,所以在其他的语言里面类方法有的时候被称为静态方法。
注意点一:类方法
1,类方法可以调用类方法。
2,类方法不可以调用实例方法,但是类方法可以通过创建对象来访问实例方法。
3,类方法不可以使用实例变量。类方法可以使用self,因为self不是实例变量。
4,类方法作为消息,可以被发送到类或者对象里面去(实际上,就是可以通过类或者对象调用类方法的意思
注意点二:类方法和实例方法
1:实例方法是— 类开头是+ 实例方法是用实例对象访问,类方法的对象是类而不是实例,通常创建对象或者工具类。
在实例方法里,根据继承原理发送消息给self和super其实都是发送给self
在类方法里面self是其他的类的类方法,在类方法中给self发送消息只能发类方法self是类super也是
什么时候用类方法,要创建一个实例时候获取一个共享实例,或者获取关于类的一些共有信息
2:类方法(class method)和实例方法(instance method)。类方法被限定在类范围内,不能被类的实例调用(即脱离实例运行)。alloc就是一种类方法。实例方法 限定在对象实例的范围内(即实例化之前不能运行)。init就是一种实例方法,被alloc方法返回的对象实例调用。
instance method 以减号 “-” 开头
class method 以加号 “+” 开头,相当于static方法

 1 #import <Foundation/Foundation.h>2 /*3  对象方法4  1> 减号 - 开头5  2> 只能由对象来调用6  3> 对象方法中能访问当前对象的成员变量(实例变量)7  8  类方法9  1> 加号 + 开头
10  2> 只能由类(名)来调用
11  3> 类方法中不能访问成员变量(实例变量)
12
13
14  类方法的好处和使用场合
15  1> 不依赖于对象,执行效率高
16  2> 能用类方法,尽量用类方法
17  3> 场合:当方法内部不需要使用到成员变量时,就可以改为类方法
18
19  可以允许类方法和对象方法同名
20  */
21
22
23 @interface Person : NSObject
24 {
25     int age;
26 }
27
28 // 类方法都是以+开头
29 + (void)printClassName;
30
31 - (void)test;
32 + (void)test;
33
34 @end
35
36 @implementation Person
37
38 + (void)printClassName
39 {
40     // error:instance variable 'age' accessed in class method
41     // 实例变量age不能在类方法中访问
42     //NSLog(@"这个类叫做Person-%d", age);
43 }
44
45 - (void)test
46 {
47     NSLog(@"111-%d", age);
48
49     //[Person test];
50 }
51
52 + (void)test
53 {
54     // 会引发死循环
55     //[Person test];
56
57     NSLog(@"333");
58
59     // 会引发死循环
60 //    /[Person test];
61 }
62
63 @end
64
65 int main()
66 {
67     //[Person printClassName];
68
69     [Person test];
70
71     //Person *p = [Person new];
72     //[p test];
73
74     /*
75      -[Person printClassName]: unrecognized selector sent to instance 0x7fa520c0b370
76      */
77     // 系统会认为现在调用的printClassName是个对象方法
78     //[p printClassName];
79
80     return 0;
81 }

转载博客园 iOS_bowen.

类方法和实例方法区别相关推荐

  1. iOS的类方法和实例方法区别与使用

    1.什么是类方法? 在OC类定义方法时以 + 开头的方法,又称为静态方法.如:+ (viod)方法名{ }. 作用:不用实例话就可以直接调用的方法,一般是有返回值的,返回对应的实例(数组.字符串等), ...

  2. 类变量,实例变量的区别以及类方法和实例方法的区别

    一.类变量和实例变量的区别 1.类变量是属于是所有对象的,用static修饰,实例变量是属于某个对象的 2.类变量也叫静态变量,不需要通过创建实例就可以调用.而实例变量需要通过对象来访问,即需要创建对 ...

  3. 类方法与实例方法的区别

    类方法与实例方法的区别 1.类方法--用static修饰的方法. 由于类方法是属于整个类的,不属于类的某一个实例(对象) 即类方法体有如下限制: 1.类方法中不能引用实例变量: 2.类方法中不能调用类 ...

  4. 类方法和实例方法的区别

    类方法是属于类的,不是对象的. 类方法的调用可以是 类名.类方法() 或者 对象名.类方法() 而实例方法只能是 对象.实例方法名() 类方法只能访问类方法,实例方法可以访问类方法和实例方法. 类方法 ...

  5. python 类可以调用实例变量_python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法...

    1. 类对象和实例对象 Python中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间.类对象具有以下两种操作: 可以通过"类名()& ...

  6. 静态方法和类方法之间的区别

    用@staticmethod装饰的函数和用@staticmethod装饰的函数有@staticmethod @classmethod ? #1楼 静态方法是一种对所调用的类或实例一无所知的方法. 它只 ...

  7. java 类方法和实例方法 调用关系

    java 类方法和实例方法 1. 类方法 也可称静态方法,使用static修饰的类中方法: 2.实例方法 非静态方法,没有用static修饰的方法. 3.测试案例 public class Test ...

  8. python学习-类(类方法、实例方法、静态方法)

    文章目录 基础知识补充 类方法.实例方法.静态方法 基础知识补充 Python面向对象-访问权限public和private 可以在属性的名称前面加上两个下划线__.如果一个变量以__开头,就变成了一 ...

  9. python静态变量和静态方法_python的静态成员变量、实例成员变量、静态方法、类方法、实例方法...

    标签: 静态成员变量(类变量)和普通成员变量(实例变量) 静态成员变量只能通过类名.变量名获得,实例成员变量,通过该实例引用.变量名获得. 在实例对静态成员变量赋值时,实例 python是动态类型的语 ...

最新文章

  1. hadoop 2.0 详细配置教程
  2. 武汉锅检所检测机器人_嵊州市管道cctv机器人-检测服务,武汉天仪ty333,诚信承诺...
  3. shell中trap捕捉到信号的处理
  4. ES7和ES8的了解
  5. django07: 模板语言(旧笔记)
  6. jdk8新特性(二)Stream流式操作
  7. oracle 百万数据存储,jdbc oracle 百万级数据量存储
  8. SpringBoot之打包错误
  9. 浏览器内核选型列表,请大家继续补充
  10. 几种线性回归方法的简介
  11. Android开发技巧——实现底部图标文字的导航栏(已更新)
  12. android虚拟机运行app出现错误Unfortunately
  13. redis 无法启动
  14. Matlab中filter.m和filtfilt.m函数C语言实现
  15. 如何提高团队管理能力?
  16. Word 文件 删除后恢复出现乱码之解决方法
  17. R语言中使用UpSet包绘制多集合Venn图
  18. chrom flash提示地区不兼容, 亲测可用
  19. Sulfo-Cyanine5 dUTP(脱氧尿苷三磷酸)三磷酸盐是Cy5 dUTP的类似物
  20. opensips介绍

热门文章

  1. 男子马云性格与星座关系(转)
  2. word中遇到复制粘贴无法使用的解决方法
  3. Postgresql全文索引
  4. CSUST 四月选拔赛个人题解
  5. vue或者react的css样式初始(css样式重置)——reset.css与normalize.css
  6. stylegan3:Setting up PyTorch plugin “bias_act_plugin“... Failed或“upfirdn2d_plugin“... Failed
  7. C语言变量类型转换之float与int互相转换
  8. 在Excel中插入Word文档(转)
  9. 虚拟机里安装Mac操作系统的详细方法(文件下载+详细步骤)
  10. 【图神经网络】Pytorch图神经网络库——PyG异构图学习