self.与_的区别

1.区别:self.是访问属性的,_是访问实例变量的。

属性是实例变量+get/set方法的集合体,主要承担外部访问的接口。

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

2.原则:在类内部访问变量时用“_”,在类外部(其他类里)访问该类的变量时用“.” 。

3.注意⚠️:

手动管理内存的情况,

使用“.”初始化变量时,会产生内存泄漏的问题。

如,self.nameArray = [NSMutaleArray alloc] init];

上述代码,在self.nameArray时相当于调用了set方法,引用计数+1,后面alloc时,引用计数再次+1。在dealloc中release时,引用计数只减了一次,并没全部释放,就造成了内存泄漏。

解决方法:用“_”初始化及访问变量,就不会产生内存泄漏。

如,_nameArray = [NSMutaleArray alloc] init];

自动管理内存(ARC)的情况,

不存在上述问题。但从编码规范上考虑,还是要注意下!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容