5

运行时 API 中有一个未记录的函数,它出现(基于一些玩具程序)执行其名称所暗示的功能:

OBJC_EXPORT void objc_disposeClassPair(Class cls) 
     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;

但是,实际的详细信息相当薄弱。所以这更像是一组相关的问题,而不是一个问题:

  • 是否有任何关于它的好文章/博客文章,或者是否有人有使用它的经验(快速谷歌建议 PyObjC 开发人员至少曾考虑过使用它)?
  • 丢弃的类是否完全释放(频繁创建和删除类的应用程序会泄漏内存吗?)
  • 除了通常的未记录 API 之外,还有什么值得牢记的陷阱吗?
  • Apple 在哪里(/可能在)使用它?NSBundle 卸载?KVO?
4

1 回答 1

2

丢弃的类是否完全释放(频繁创建和删除类的应用程序会泄漏内存吗?)

是的,它们将被完全释放。如果您查看http://www.opensource.apple.com/source/objc4/objc4-437/test/classpair.mcycle中的函数,您会发现它同时分配和解除分配多个类。下面的实现运行该函数 100 次,并检查泄漏,这表明他们不会发布严重泄漏的实现。如果您想了解更多信息,您应该查看http://www.opensource.apple.com/source/objc4/objc4-437/runtime/中的代码。您可能可以在某处找到苹果的两个函数的实际代码,以及它的使用位置。main

于 2011-05-27T06:21:22.467 回答