好吧,所以我有一個方法,輸入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
優於其他?