iOS-类方法和实例方法
类方法
- 类方法也叫静态方法或工厂方法
- 在声明(.h)和实现(.m)中函数以 + 开头
- 在应用程序开始运行时一直驻于内存,所以可直接通过类名进行引用该方法:[UIColor whiteColor]
- 调用类方法速度很快,但会占用内存,适合整个应用程序中频繁调用的方法
- 类方法一般用于实现一些工具方法,比如对某个对象进行扩展,或者实现单例等
- 类方法内部可以通过self调用自己的类方法
- 类方法内部不可以通过self来调用自己的实例方法,需要通过创建一个自己的实例对象来访问自己的实例方法
- 类方法内部不可以通过self来访问自己的属性如self.iconImageArr
- 在类方法中要访问自己的属性,必须要在类中实例化一个对象,然后再调用,但是都要调用实例属性了,为什么使用实例方法呢?
- 注意:静态内存是有限制的且是连续存放,过多占用会导致程序无法启动
- 实例方法也叫动态方法或对象方法
- 在声明(.h)和实现(.m)中函数以 - 开头
- 需要创建类的实例后才能引用该方法:[[NSUserDefaults standardUserDefaults] objectForKey:@"..."]
- 实例方法调用动态分配内存,调用完成后会释放内存,节省内存,但调用速度较类方法慢
- 同样的,实例方法内部可以通过self调用实例方法
- 实例方法内部不可以通过self调用类方法,可以使用[self class]来调用类方法
【iOS-类方法和实例方法】如果一个方法与类的实例无关(该方法内部就是不会访问自己的属性,不会调用实例方法),那么就可以写成类方法。
实际上可以把所有的实例方法都写成类方法,只需要将实例作为参数传入,这样类方法内部可以访问属性和调用实例方法。
但我们还是应该从函数功能作用出发来决定该使用哪种方法。这应该是深思熟虑的结果。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 为什么你的路演总会超时()
- 对抗抑郁最好的方法
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 怎样用黑谜速冻膜去黑头,|怎样用黑谜速冻膜去黑头, 最有效的去黑头的方法看这!
- 移动端h5调试方法
- thinkphp|thinkphp 3.2 如何调用第三方类库
- 唱歌教学(导致嗓音损坏的几个常见的错误唱歌方法!)
- 使用composer自动加载类文件
- 一个健康的APP和健全的人格大体类似