需要保留和合成NSStrings?

时间:2011-08-18 02:43:05

标签: iphone objective-c

我是否应该保留和合成NSStrings有点困惑。我有NSString值作为实例变量,并保留并合成它。但我正在为它分配不同的值,例如:

self.value = @"VALUE";
....
self.value = @"DIFFERENT_VALUE";

我实际上并没有随时打电话给alloc。我需要保留并合成这个变量吗?

3 个答案:

答案 0 :(得分:3)

您可以将实时字符串视为使用它们的方式自动释放,但实际上它们可能会保留为固定值...因为您使用的是访问器,它们将自动被复制或保留(但是你标记了访问者),所以你需要在dealloc中释放它们。

至于需要@synthesize,记住所有正在为你做的事实上是创建get / set方法,它接受变量并将它放在你的iVar中。所以无论您需要@synethsize属性还是自己创建get /方法 - 通常只需要使用@sythesize.

答案 1 :(得分:1)

您应该永远不会知道将来如何更改代码的使用。更改代码以使用动态创建的字符串,如果不遵守规则,它将会中断。

另请注意,NSString的最佳做法是将其设置为复制而不是保留。原因很简单,这可以防止在你的脚下改变弦。

有关详细信息,请参阅NSString property: copy or retain?

答案 2 :(得分:0)

如果您从未分配过它们,则通常不需要保留,但如果它们是对象中的实例变量,则可能标记为保留复制< / strong>所以在你的对象的dealloc方法中,你应该释放这些对象,如果它有一个值。