iOS开发-面试

iOS 类方法与实力方法的区别

2018-07-23  本文已影响49人  在下有双

1.区别:

(1)静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先生成实例,通过实例调用方法,静态速度很快,但是多了会占内存。
(2)静态内存是连续的,因为在程序开始时就生成了,而实例生成的是离散的空间,所以当然没有静态方法快,而且静态内存是有限制的,太多了程序会启动不了。

2.使用场景:

(1)如果需要访问或者修改某个实例的成员变量时,将该方法定义成实例方法。类方法刚好相反,它不需要访问或者修改某个实力的成员变量。
(2)类方法一般用于实现一些工具方法,比如对某个对象进行扩展,或者实现单例。
(3)类方法常驻内存,实例方法不是,所以类方法效率高但是占内存。类方法在堆上分配内存,实例方法在栈上分配内存。
(4)实例方法需要先创建实例才可以调用,比较麻烦,类方法不用比较简单。

3.注意点一:类方法

(1)类方法可以调用类方法。
(2)类方法不可以调用实例方法,但是类方法可以通过创建对象来访问实例方法。
(3)类方法不可以使用实例变量。类方法可以使用self,因为self不是实例变量。
(4)类方法作为消息,可以被发送到类或者对象里面去(实际上,就是可以通过类或者对象调用类方法的意思)。

4.注意点二:self的规则

(1)实例对象里的self,是对象的首地址
(2)类方法里的self,是Class。
上一篇 下一篇

猜你喜欢

热点阅读