我注意到,我很少使用属性,因为事实上,我很少需要访问我的课以外我对象的变量;)赋值:属性和类变量之间的区别?
所以我通常做的:
NSMutableArray *myArray; // not a property !
我的问题是:即使我不myarray的声明作为属性,并iphone作出保留反正如果我做
myArray = arrayPassedToMe;
我想是这样,但我只是想确认;)
任何想法欢迎!
Gotye
我注意到,我很少使用属性,因为事实上,我很少需要访问我的课以外我对象的变量;)赋值:属性和类变量之间的区别?
所以我通常做的:
NSMutableArray *myArray; // not a property !
我的问题是:即使我不myarray的声明作为属性,并iphone作出保留反正如果我做
myArray = arrayPassedToMe;
我想是这样,但我只是想确认;)
任何想法欢迎!
Gotye
如果您没有用'retain'声明一个属性,那么不会进行保留调用。通常最好使用属性访问器(适用于所有情况下,它使内存管理更简单),但是你可以手动保留这样:
myArray = [otherArray retain];
我想补充凯文的答案,在这种情况下,你还需要确保在该myArray的当前指向被分配新的值之前释放任何现有的对象,这意味着:
[myArray release];
myArray = [otherArray retain];
当您通过声明的属性访问类变量,所有这些东西与固定/释放记忆是为你自动完成的,让你的生活更轻松。
所以,如果我明白,如果我只是做 myArray = otherArray; myArray会引用otherArray吗?所以如果释放其他数组,myArray会自动释放,对吗? 如果其他数组被修改,myArray也会被修改? – gotye 2010-03-22 16:18:04
是的,AFAIK该声明只是创建一个参考。如果你不想把物体留在身边,你应该保留它。 – Rengers 2010-03-22 16:37:49