iOS-类方法与实例方法

搬运自

动态方法/实例方法

1).标识符:— 类开头

2).调用方式:(实例对象    函数)

3).实例方法在堆栈上。

静态方法/类方法

1).标识符:+ 类开头

2).调用方式:(类    函数)

3).静态方法在堆上分配内存。

静态方法和实例方法的区分

1).静态方法常驻内存,实例方法不是,所以静态方法效率高但占内存。事实上,方法都是一样的,在加载时机和占用内存上,静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别。

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

3).实例方法需要先创建实例才可以调用,比较麻烦,静态方法不用,比较简单。

4).静态方法是静态绑定到子类,不是被继承。

5).一般使用频繁的方法用静态方法,用的少的方法用动态的。静态的速度快,占内存。动态的速度相对慢些,但调用完后,立即释放类,可以节省内存,可以根据自己的需要选择是用动态方法还是静态方法。

6).静态方法修改的是类的状态,而对象修改的是各个对象的状态。

7).类的实例调用是在类的生命周期中存在,当类没有了以后,对应的实例也就没有了,对应的方法也就没有了。静态类不然,只要你引用了那个静态类的命名空间,它就会一直存在,直到我们推出系统。

使用场景

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

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

3.类方法一般用于实现一些工具方法,比如对某个对象进行扩展,或者实现单例。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简单来说类方法与实例方法跟懒加载差不多一个道理。类方法也称静态方法,类方法只要创建了运行就会生成内存,并且可以直接...
    coco_CC阅读 496评论 0 0
  • 先来一发代码,捋一捋(+方法就是类方法,-方法就是实例方法): 类方法:1、类方法可以调用类方法;2、类方法不可以...
    管乐_VICTOR阅读 4,863评论 0 8
  • 明确区分下两者区别:1.类方法以+号开头 对象方法以-号开头2.类方法直接 [类名 类方法名]调用 对象方法要创建...
    一路向北客阅读 1,678评论 0 2
  • 以下内容来源于招聘一个靠谱的iOS,笔者整理以下供大家各抒己见 类方法: 类方法是属于类对象的(所谓的类对象,不是...
    小码农_gjw阅读 545评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139