在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)中不会出现上述问题。