iOS 类方法与实例方法

简单来说类方法与实例方法跟懒加载差不多一个道理。类方法也称静态方法,类方法只要创建了运行就会生成内存,并且可以直接调用  类名+方法名就可以。而实例方法是调用的时候才会生成内存。


区别

静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,

所以静态方法可以直接调用,实例方法要先成生实例,通过实例调用方法,静态速度很快,但是多了会占内存。

静态内存是连续的,因为是在程序开始时就生成了,而实例申请的是离散的空间,所以当然没有静态方法快,

而且静态内存是有限制的,太多了程序会启动不了。

使用场景

如果需要访问或者修改某个实例的成员变量时,将该方法定义成实例方法。

类方法正好相反,它不需要访问或者修改某个实例的成员变量。

类方法一般用于实现一些工具方法,比如对某个对象进行扩展,或者实现单例。

类方法常驻内存,实例方法不是,所以类方法效率高但占内存。

类方法在堆上分配内存,实例方法在堆栈上。

事实上所有的方法都不可能在堆或者堆栈上分配内存,方法作为代码是被加载到特殊的代码内存区域,这个内存区域是不可写的。

实例方法需要先创建实例才可以调用,比较麻烦,类方法不用,比较简单。

事实上如果一个方法与他所在类型的实例无关,那么它就应该是静态的,决不会有人把它写成实例方法。所以所有的实例方法都与实例有关,既然与实例有关,那么创建实例就是必然的步骤,没有麻烦简单一说。实际上上你可以把所有的实例方法都写成静态的,将实例作为参数传入即可。

类方法,也称静态方法,指的是用static关键字修饰的方法。此方法属类本身的方法,不属于类的某一个实例(对象)。类方法中不可直接使用实例变量。其调用方式有三种:可直接调用、类名.方法名、对象名.方法名。实例方法指的是不用static关键字修饰的方法。每个实例对象都有自身的实例方法,互相独立,不共享一个。其调用方式只能是对象名.方法名。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,084评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,158评论 18 399
  • 明确区分下两者区别:1.类方法以+号开头 对象方法以-号开头2.类方法直接 [类名 类方法名]调用 对象方法要创建...
    一路向北客阅读 5,565评论 0 2
  • 大家知道画有纵深的插画时所使用的一点透视图法吗?一点透视图法是使用了透视图(Perspective)的一种远近法,...
    欧阳杂谈阅读 8,595评论 0 0
  • 重走长征路 暖冬万里行 第45天 霜天冰地 地瘠人寒 又见“小红籽儿”,霜打的小红籽儿依然红亮鲜艳…… 早上在桃花...
    寒冰0601阅读 1,531评论 0 0

友情链接更多精彩内容