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

1.区别:

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

2.使用场景:

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

3.注意点一:类方法

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

4.注意点二:self的规则

(1)实例对象里的self,是对象的首地址
(2)类方法里的self,是Class。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,694评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,894评论 2 9
  • 昨晚第一次参加了《樊登读书会》线下活动。本次活动主题是 家庭教育类 书籍《童年的秘密》分享交流会。 抱着一颗虔诚学...
    小黑52000阅读 271评论 0 0
  • 月下独酌四首·其一 [ 唐·李白 ] 花间一壶酒,独酌无相亲。 举杯邀明月,对影成三人。 月既不解饮,影徒随我身。...
    不能吃酒的阅读 118评论 0 0