2010-04-24 51 views
0

说我有:当我将其设置为新对象时,是否必须调用release-objective-c retain类变量?

@property(nonatomic,retain)NSString * foo;

在某些类。

我呼吁:

 
myclass.foo = [NSString stringWithString:@"string1"]; 
myclass.foo = [NSString stringWithString:@"string2"]; 

我是不是应该叫[myclass.foo发布]设置为“字符串2”,以避免内存泄漏过吗?

或者事实上没有任何东西指向第一个“string1”对象了吗?

而在dealloc方法中[foo release]会被调用。

+0

你应该永远不要在像'[myclass.foo release]'这样的属性存取器上使用释放。 – Giao 2010-04-24 22:53:34

+1

请阅读Cocoa内存管理指南。 – 2010-04-24 22:55:58

+0

更具体地说:http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/MemoryMgmt/ – 2010-04-25 00:40:48

回答

3

Apple Docs声明的属性

保留
指定保留应当在分配对象上调用。 (默认值是赋值。)
以前的值发送释放消息。

相关问题