美文网首页
self.和下划线的用法区别

self.和下划线的用法区别

作者: 弹一首键盘协奏曲 | 来源:发表于2016-06-29 20:19 被阅读173次

           在xcode中,变量有自己的set和get方法,需要程序员自己手动去写,但是还有一种变量的声明方式,我们可以使用@property声明一个属性,系统会帮我们自动生成set和get方法。

           同时我们使用中会发现当我们访问变量时候,会有self.xxx和_xxx两种访问方式,他们的有什么区别呢?下面列出我对着两种调用方式的理解;

          @property (retain, nonatomic) NSMutableArray *dataArray;

          self.dataArray是访问属性的,而_dataArray是访问实例变量的。属性就是实例变量加上set和get方法的一个正合体,他主要是承担一个外部访问的一个接口

          实例变量只能在本类中使用,外部变量不能访问!

          在类内部访问变量的时候用“-”,在类外部访问该变量时候用“.” 。

          注意事项:在手动内存管理(MRC)的时候使用“.”语法初始化变量的时候会产生内存泄露的问题,比如self.dataArray = [[NSMutaleArray alloc] init];时候self.dataArray相当于调用了set方法,一用计数会+1,在后面alloc时候引用计数会再次+1,这样在最后dealloc的时候,引用计数会为1,没有被释放,这样就造成了内存泄露。

          关于上述问题解决办法:在初始化的时候用“_”来调用,这样就不会产生内存泄露的问题了。在自动管理内存(ARC)中不会出现上述问题。

    相关文章

      网友评论

          本文标题:self.和下划线的用法区别

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