美文网首页iOS开发-面试
iOS 类方法与实例方法总结

iOS 类方法与实例方法总结

作者: 啊俊吖 | 来源:发表于2018-07-25 11:10 被阅读55次

1、区别:

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

2、使用场景:

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

类方法正好相反,它不需要访问或者修改某个实例的成员变量。
类方法一般用于实现一些工具方法,比如对某个对象进行扩展,或者实现单例。

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

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

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

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

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

类方法,也称静态方法,在C++中指的是用static关键字修饰的方法,而在OC里就是+方法,在Swift里是class func。

此方法属类本身的方法,不属于类的某一个实例(对象)。

类方法中不可直接使用实例变量,

在C++中其调用方式有三种:可直接调用、类名.方法名、对象名.方法名,

在OC中是不需要alloc一个新的对象,直接用类名调用,

Swift中直接类名.方法。

实例方法,在C++中指的是不用static关键字修饰的方法,OC中是-方法,Swift中就是普通的func。 每个实例对象都有自身的实例方法,互相独立,不共享一个。

在C++中其调用方式只能是对象名.方法名。

在OC里是需要alloc一个对象,然后调用。

在Swift中也是需要对象.方法。

Objective-C里面既有实例方法也类方法。类方法(Class Method) 有时被称为工厂方法(Factory Method)或者方便方法(Convenience method)。工厂方法的称谓明显和一般意义上的工厂方法不同,从本质上来说,类方法可以独立于对象而执行,所以在其他的语言里面类方法有的时候被称为静态方法。

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

注意点二:self的规则
大家需要记住下面的规则:
1,实例方法里面的self,是对象的首地址。
2,类方法里面的self,是Class.

尽管在同一个类里面的使用self,但是self却有着不同的解读。

在类方法里面的self,可以翻译成class self;在实例方法里面的self,应该被翻译成为object self。

在类方法里面的self和实例方法里面的self有着本质上的不同,尽管他们的名字都叫self。

类方法创造的对象要不要用release释放?

答: 不需要 这个对象被放到自动释放池中,在ARC中已经不需要考虑这个问题了

Object-C中的私有方法和私有成员变量

成员变量默认对内是共有的,对外是私有的。

原文:https://blog.csdn.net/youshaoduo/article/details/55253041

相关文章

  • iOS 类方法与实例方法总结

    1、区别: 静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生...

  • 对象方法(实例方法) 类方法(静态方法)的区别

    参考资源 Objective-C中类方法、对象方法介绍及区别iOS---类方法(静态方法)和实例方法iOS 类方法...

  • runtime(一)

    总结:Classget 类名,父类;实例变量;属性;实例方法,类方法,方法实现;Copy 实例变量列表;属性列...

  • iOS类方法与实例方法

    首先从表面上看,类方法即是以+开始的方法,实例方法一 - 开始。 那么具体区别在于: 类方法也叫静态方法在程序开始...

  • iOS 类方法与实例方法

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

  • 问题

    SAP问题总结 跟踪 oo 类的实例化和静态区别 静态方法 静态方法是可以与类实例无关地调用的方法。您只能在St...

  • iOS-类方法与实例方法

    搬运自 动态方法/实例方法 静态方法/类方法 静态方法和实例方法的区分 使用场景

  • iOS类方法与实例方法区别

    明确区分下两者区别:1.类方法以+号开头 对象方法以-号开头2.类方法直接 [类名 类方法名]调用 对象方法要创建...

  • iOS类方法与实例方法区别

    明确区分下两者区别: 1.类方法以+号开头 对象方法以-号开头 2.类方法直接 [类名 类方法名]调用 对象方法要...

  • Swift 5.1 (11) - 方法

    级别: ★☆☆☆☆标签:「iOS」「Swift 5.1」「实例方法」「类方法」「mutating」作者: 沐灵洛审...

网友评论

    本文标题:iOS 类方法与实例方法总结

    本文链接:https://www.haomeiwen.com/subject/gccpmftx.html