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