2010-03-22 71 views
1

我注意到,我很少使用属性,因为事实上,我很少需要访问我的课以外我对象的变量;)赋值:属性和类变量之间的区别?

所以我通常做的:

NSMutableArray *myArray; // not a property ! 

我的问题是:即使我不myarray的声明作为属性,并iphone作出保留反正如果我做

myArray = arrayPassedToMe; 

我想是这样,但我只是想确认;)

任何想法欢迎!

Gotye

回答

2

如果您没有用'retain'声明一个属性,那么不会进行保留调用。通常最好使用属性访问器(适用于所有情况下,它使内存管理更简单),但是你可以手动保留这样:

myArray = [otherArray retain]; 
+0

所以,如果我明白,如果我只是做 myArray = otherArray; myArray会引用otherArray吗?所以如果释放其他数组,myArray会自动释放,对吗? 如果其他数组被修改,myArray也会被修改? – gotye 2010-03-22 16:18:04

+0

是的,AFAIK该声明只是创建一个参考。如果你不想把物体留在身边,你应该保留它。 – Rengers 2010-03-22 16:37:49

0

我想补充凯文的答案,在这种情况下,你还需要确保在该myArray的当前指向被分配新的值之前释放任何现有的对象,这意味着:

[myArray release]; 
myArray = [otherArray retain]; 

当您通过声明的属性访问类变量,所有这些东西与固定/释放记忆是为你自动完成的,让你的生活更轻松。

相关问题