为什么使用自我...... self.something = manything;
答案 0 :(得分:0)
主要区别在于调用没有self将直接访问变量并且通过self调用将调用set / get方法。什么是差异?
因为你需要在Objective-C中仔细考虑内存,当你做something = manything;
时,很多东西都附着在某物上,而之前附着在物体上的物体就会丢失。
要做的好事是使用set方法,在设置新对象之前注意释放旧对象。您可以记住,要设置某些内容,最好使用self.something
。
一个明确的例子:
1)如果你这样做(假设myArray是一个属性):BAD CASE
NSArray *tmpArray = [NSArray arrayWithObjects:@"obj1", @"obj2", nil];
myArray = tmpArray;
第一行创建一个自动释放的数组,然后我们将此数组分配给myArray。如果myArray中存在某些内容,则不会释放它,并且不会保留新数组。这将导致内存泄漏和崩溃,因为我们将尝试访问myArray,因为将释放自动释放的数组。
2)如果你这样做:好的案例
NSArray *tmpArray = [NSArray arrayWithObjects:@"obj1", @"obj2", nil];
self.myArray = tmpArray; //Equivalent to [self setMyArray:tmpArray];
我们在这里调用访问器方法,如果需要,这个方法将负责释放旧对象(没有memomry泄漏),并且如果还需要它将保留新的assign对象(该数组现在由我们的属性保留并且可以在furure访问。)
=>要恢复,一切都与内存管理有关。
答案 1 :(得分:0)
每当你设置变量&的属性时如果你想访问同一个类中的属性,我们通常会使用
self.(ObjectName) //for accessing getter & setter method.
另一个好处是,如果你想使用其他类中的任何对象,我们也会使用它来合成该对象&创建该类的对象,我们可以访问该类的成员变量。