我是否应该保留和合成NSStrings
有点困惑。我有NSString
值作为实例变量,并保留并合成它。但我正在为它分配不同的值,例如:
self.value = @"VALUE";
....
self.value = @"DIFFERENT_VALUE";
我实际上并没有随时打电话给alloc
。我需要保留并合成这个变量吗?
答案 0 :(得分:3)
您可以将实时字符串视为使用它们的方式自动释放,但实际上它们可能会保留为固定值...因为您使用的是访问器,它们将自动被复制或保留(但是你标记了访问者),所以你需要在dealloc中释放它们。
至于需要@synthesize,
记住所有正在为你做的事实上是创建get / set方法,它接受变量并将它放在你的iVar中。所以无论您需要@synethsize
属性还是自己创建get /方法 - 通常只需要使用@sythesize.
答案 1 :(得分:1)
您应该永远不会知道将来如何更改代码的使用。更改代码以使用动态创建的字符串,如果不遵守规则,它将会中断。
另请注意,NSString的最佳做法是将其设置为复制而不是保留。原因很简单,这可以防止在你的脚下改变弦。
有关详细信息,请参阅NSString property: copy or retain?。
答案 2 :(得分:0)
如果您从未分配过它们,则通常不需要保留,但如果它们是对象中的实例变量,则可能标记为保留或复制< / strong>所以在你的对象的dealloc方法中,你应该释放这些对象,如果它有一个值。