关于变量self 和 下划线的区别

本文介绍了在iOS开发中使用@property时self变量与以_开头的实例变量的区别。self变量用于访问属性,而_开头的变量用于直接访问实例变量。文章还讨论了不同访问方式在内存管理上的影响。

  在我学习ios(2015年十月开始学)的时候,已经有了@property,但是在以前的xcode中,是需要我们自己去写set,get方法。现在有了@property,系统已经自动帮我们生成了set,get方法,同时发现我们在访问我们声明的变量时,会有self.和以"_"开头的访问方式,那么这两种访问方式有什么样的区别呢?

我们来一起看一下:

@property (retain,nonatomic) NSMutableArray *nameArray;

 self.nameArray是访问属性的,而_nameArray是访问实例变量的.

属性是实例变量加上get,set方法的一个整合体,它主要是承担外部访问的一个借口.

实例变量只能在本类中才可以访问,外部不可以访问!

 

总得原则:

在类内部访问变量的时候用"_"

在类外部,也就是其他类里访问这个类的变量时用“.”语法;

 

注意事项:

手动管理内存的情况下:

  使用"."语法来初始化变量的时候,会产生内存泄露的问题。

  比如:

self.nameArray = [NSMutaleArray alloc] init};

   上述代码,造成的问题是,self.nameArray的时候相当于调用了set方法,引用计数+1,而后面alloc的时候,引用计数又+1

  解决方法:就是用"_"来初始化以及访问变量,这样就不会产生内存问题,虽然不是什么高明的方法,但的确有效。

_nameArray = [NSMutaleArray alloc] init];

 上述便是"."和"_"在使用的时候的简单区别。

如果是在ARC(自动管理内存)的情况下虽然不存在上述问题,但从编码规范来考虑,还是注意点儿的好。

转载于:https://www.cnblogs.com/lomomiao/p/5004819.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值