2
在C中,類似下面的內容會是一個災難(即內存泄漏),因爲您要返回一個指向內存的指針,您永遠無法釋放它:返回指向分配給函數的內存的指針
NSString* foo()
{
return [NSString stringWithFormat:@"%i+%i=%i", 2, 2, 2+2];
}
這實際上在Objective-C中是完全正常的,因爲返回的指針所指向的內存將被自動釋放?即使它可以,它是否因任何原因而皺起了眉頭?任何理由喜歡C風格,如下所示?
void foo(NSString ** modifyMe)
{
*modifyMe = [NSString stringWithFormat:@"%i+%i=%i", 2, 2, 2+2];
}
順便說一句,你的第二個例子將失敗。您不能在函數內重新分配指針,因爲指針本身是按值複製的。如果你想讓你的第二個例子工作,你必須使用NSString ** modifyMe作爲參數... – 2009-01-11 13:42:35
哈,謝謝賈森!固定。 – dreeves 2009-01-11 19:18:18
我通常將第二個示例中的模式稱爲「輸出參數」。不知道是否有其他人這樣做,但這就是我所說的。 – ipmcc 2013-02-09 12:41:33