如果我正在获取数据更新 - 例如,让我们说一些新的返回JSON - 那么人们认为什么更干净?
a)只需释放任何旧对象,然后创建新对象。
或
b)具有 - (id)initWithJSON:json类型初始值设定项,可以“重置”对象中包含的数据以使用传入的新数据。
第二种情况意味着多次调用“init”方法并编码它们以便小心释放/复制包含的对象。
答案 0 :(得分:3)
(a)肯定更好。通常,使用不可变而不是可变数据结构的算法更容易编写和推理。如果分析表明(a)不可行,那么(并且只有那时)考虑(b)。如果你沿着这条路前进,那么你的未来维护者是一个忙,并使用resetWithJSON:或某种方法。您可以在init和reset方法之间提取公共代码,但是让您的公共API使用这两种方法,以便明确您的意图。
答案 1 :(得分:2)
巴里已经回答了,但让我用不同的方式说出来:
绝对是a)是通常的方法。
您可以按照b)中的建议重复使用该对象,但是当您这样做时,永远不会设计您的类,以便您不止一次调用名为 init...
的方法即可。这违背了Objective-C的每一个既定习惯。
以NSMutableString
为例。您可以使用
NSMutableString* ms=[[NSMutableString alloc] initWithString:@"boo"];
你可以通过加密来重置它
[ms setString:@"bar"];
但你永远不会
[ms initWithString:@"boo"];
名为init...
的方法只应与alloc
一起使用,而不应与其他任何地方一起使用。