【问题标题】:What do I need to know to manage memory in Objective C++?在 Objective C++ 中管理内存需要了解什么?
【发布时间】:2010-03-11 23:11:35
【问题描述】:

我正在 iPhone 应用程序中使用 C++ 音频库。是否有任何 Objective C / Cocoa 内存管理基础架构可以用于我的 C++ 对象,还是我需要阅读并学习 C++ 内存管理?

【问题讨论】:

  • 您可以为 C++ 类编写包装器,在相应的 Objective-C 方法(init 和 dealloc)中分配和释放它们,然后通过这些包装器访问库,使用标准的 Cocoa 内存管理技术(甚至自动释放也可以)。
  • Felixyz:你是对的,但是这会假设你理解 c++ 内存管理吗?例如。什么是 newdelete 以及变量的范围?您会从不了解管理内存等基本问题的开发人员那里购买和应用程序吗?最重要的是,如果他是 Objective-c 开发人员,那么将很容易理解 C++ 内存管理,因为它是 Objective-c 提供的功能的一个子集。

标签: iphone objective-c objective-c++


【解决方案1】:

当我讨论和比较 Objective-C 内存管理和惯用的 C++ 内存管理时,您可能会发现 my latest blog post useful,至少是前半部分。

执行摘要是大多数 C++ 开发人员使用smart pointers

对于 Objective-C++,还有一些额外的事情需要担心——尤其是(至少在默认情况下),作为 Objective-C 类成员的 C++ 值类型没有自动为您调用的构造函数或析构函数。当然,你可以明确地调用它们——但这很难看。就我个人而言,我倾向于通过侵入式指针(智能、引用计数、引用计数保存在对象本身内的指针——很像 Obj-C 指针——这就是为什么它们非常适合)来保存它们。

【讨论】:

  • 完全同意您的帖子:“我的观点是,由于智能指针 - 通过确定性破坏实现...... C++ 中并没有真正错过垃圾收集。”
猜你喜欢
  • 2010-12-26
  • 1970-01-01
  • 2012-08-08
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
相关资源
最近更新 更多