iOS-类方法和实例方法

类方法

  • 类方法也叫静态方法或工厂方法
  • 在声明(.h)和实现(.m)中函数以 + 开头
  • 在应用程序开始运行时一直驻于内存,所以可直接通过类名进行引用该方法:[UIColor whiteColor]
  • 调用类方法速度很快,但会占用内存,适合整个应用程序中频繁调用的方法
  • 类方法一般用于实现一些工具方法,比如对某个对象进行扩展,或者实现单例等
  • 类方法内部可以通过self调用自己的类方法
  • 类方法内部不可以通过self来调用自己的实例方法,需要通过创建一个自己的实例对象来访问自己的实例方法
  • 类方法内部不可以通过self来访问自己的属性如self.iconImageArr
  • 在类方法中要访问自己的属性,必须要在类中实例化一个对象,然后再调用,但是都要调用实例属性了,为什么使用实例方法呢?
  • 注意:静态内存是有限制的且是连续存放,过多占用会导致程序无法启动

实例方法

  • 实例方法也叫动态方法或对象方法
  • 在声明(.h)和实现(.m)中函数以 - 开头
  • 需要创建类的实例后才能引用该方法:[[NSUserDefaults standardUserDefaults] objectForKey:@"..."]
  • 实例方法调用动态分配内存,调用完成后会释放内存,节省内存,但调用速度较类方法慢
  • 同样的,实例方法内部可以通过self调用实例方法
  • 实例方法内部不可以通过self调用类方法,可以使用[self class]来调用类方法

在实例方法中selfobject,而在类方法中selfclass,所以在两种方法内部无法通过self来相互调用,self只能调用相同类型的方法。

如果一个方法与类的实例无关(该方法内部就是不会访问自己的属性,不会调用实例方法),那么就可以写成类方法。

实际上可以把所有的实例方法都写成类方法,只需要将实例作为参数传入,这样类方法内部可以访问属性和调用实例方法。

但我们还是应该从函数功能作用出发来决定该使用哪种方法。这应该是深思熟虑的结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值