赋值:属性和类变量之间的区别?

时间:2010-03-22 09:11:50

标签: iphone properties variable-assignment class-variables

我注意到我很少使用属性,因为我很少需要在我的课外访问我的对象的变量;)

所以我通常这样做:

NSMutableArray *myArray; // not a property !

我的问题是:即使我没有将myArray声明为属性,如果我这样做,iphone仍会保留

myArray = arrayPassedToMe;

我想是的,但我只想确认;)

欢迎任何想法!

高堤耶

2 个答案:

答案 0 :(得分:2)

如果您未使用“保留”声明属性,则不会进行保留呼叫。通常最好使用属性访问器(对于所有情况,它使内存管理更加简单),但是您可以执行手动保留:

myArray = [otherArray retain];

答案 1 :(得分:0)

只是添加到Kevin的答案中,在这种情况下,您还需要确保在为其分配新值之前释放myArray当前指向的任何现有对象,这意味着:

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

当您通过声明的属性访问类变量时,所有这些具有保留/释放内存的内容都会自动为您完成,让您的生活更轻松。