在 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];
}
最佳答案
Cocoa 中的函数与 Cocoa 中的其他函数遵循相同的内存管理规则。你的第一个例子非常好。
关于objective-c - 返回指向函数内分配的内存的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/432491/