好吧,所以我有一个方法,输入NSString
作为输入,对此字符串的内容进行操作,并返回处理的字符串。所以声明:我应该返回一个NSMutableString返回NSString的方法
- (NSString *) processString: (NSString *) str;
的问题:我应该回报,我作为我的“工作”缓冲的NSMutableString
实例,或者我应该创建围绕可变一个新的NSString
,并返回?
所以我应该这样做:
- (NSString *) processString: (NSString *) str
{
NSMutableString *work = [NSMutableString stringWithString: str];
// process 'work'
return work;
}
或者这样:
- (NSString *) processString: (NSString *) str
{
NSMutableString *work = [NSMutableString stringWithString: str];
// process 'work'
return [NSString stringWithString: work]; // or [work stringValue]?
}
第二个让我返回字符串的另一个副本,除非NSString
确实喜欢副本上聪明事-修改。但是,第一个是在理论上,返回调用者可以稍后去修改的东西。我不在乎他们是否这样做,因为弦是他们的。但是,有没有正确的理由偏好后者的形式?而且,是stringWithString
还是stringValue
优于其他?