objective-c - 返回指向函数内分配的内存的指针

标签 objective-c cocoa memory memory-management memory-leaks

在 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/

相关文章:

iOS - 如果我在描述文本中发送 "&",Pinterest 分享描述文本不起作用

iphone - 删除通知

objective-c - NSDateFormatter 不会在 NSDate 中转换我的 NSString

cocoa - 从一个 nib 文件访问另一个 nib 文件上的对象

objective-c - 从 Safari 中拖动图像并将其放到扩展坞图标上在雪豹中不起作用?

ios - 使用 UIRefreshControl 刷新 UITableView

cocoa 日期选择器格式

swift - 在这种情况下,Swift 会复制突变吗?

c - 传递指针作为参数,内存使用情况

c++ - 在类中声明一个指针,但在另一个线程中初始化